     {
         BLOCK_THREADS       = _BLOCK_THREADS,
         ITEMS_PER_THREAD    = _ITEMS_PER_THREAD,
-        VECTOR_LOAD_LENGTH  = _VECTOR_LOAD_LENGTH,
         OVERSUBSCRIPTION    = _OVERSUBSCRIPTION,
     };
 
-    static const GridMappingStrategy   GRID_MAPPING       = _GRID_MAPPING;
-    static const PtxLoadModifier       LOAD_MODIFIER      = _LOAD_MODIFIER;
+    static const BlockLoadPolicy        LOAD_POLICY      = _LOAD_POLICY;
+    static const BlockStorePolicy       STORE_POLICY     = _STORE_POLICY;
 };
 
 
 /**
- * \brief BlockReduceTiles implements an abstraction of CUDA thread blocks for
+ * \brief BlockScanTiles implements an abstraction of CUDA thread blocks for
  * participating in device-wide reduction.
  */
 template <
     typename BlockScanTilesPolicy,
     typename InputIterator,
+    typename OutputIterator,
     typename SizeT>
-class BlockReduceTiles
+class BlockScanTiles
 {
 private:
 


public:

    /// \smemstorage{BlockReduceTiles}
    typedef _SmemStorage SmemStorage;

private:

        BLOCK_THREADS       = BlockScanTilesPolicy::BLOCK_THREADS,
        ITEMS_PER_THREAD    = BlockScanTilesPolicy::ITEMS_PER_THREAD,
        TILE_ITEMS          = BLOCK_THREADS * ITEMS_PER_THREAD,
    };

    static const BlockLoadPolicy LOAD_POLICY = BlockScanTilesPolicy::LOAD_POLICY;
    static const BlockStorePolicy STORE_POLICY = BlockScanTilesPolicy::STORE_POLICY;

    // Parameterized block-wide primitives
    typedef BlockLoad<InputIterator, BLOCK_THREADS> BlockLoadT;

    // Shared memory type for this threadblock
    struct _SmemStorage
