 
     using MaxPolicyT = typename DispatchAdjacentDifference::MaxPolicy;
 
-    using AgentDifferenceT = AgentDifference<AdjacentDifferencePolicyT,
-                                             InputIteratorT,
-                                             OutputIteratorT,
-                                             DifferenceOpT,
-                                             OffsetT,
-                                             InputT,
-                                             OutputT,
-                                             MayAlias,
-                                             ReadLeft>;
-
     cudaError error = cudaSuccess;
 
     do

  using ActivePolicyT = 
    typename ChainedPolicyT::ActivePolicy::AdjacentDifferencePolicy;

  using Agent = AgentDifference<ActivePolicyT,
                                InputIteratorT,
                                OutputIteratorT,

      const int tile_size = AdjacentDifferencePolicyT::ITEMS_PER_TILE;
      const int num_tiles =
        static_cast<int>(DivideAndRoundUp(num_items, tile_size));

      std::size_t first_tile_previous_size = MayAlias * num_tiles *
                                             sizeof(InputT);
