final(binary()) :: {:ok, binary()} | {:error, atom()}
final_verify(binary(), binary()) :: :ok | {:error, atom()}
update(binary(), binary()) :: {:ok, binary()} | {:error, atom()}