         -> ValueObservation<ValueReducers.Raw<[Request.RowDecoder]>>
         where Request.RowDecoder: DatabaseValueConvertible
     {
-        return ValueObservation<ValueReducers.Raw<[Request.RowDecoder]>>(
-            tracking: request.databaseRegion,
-            reducer: ValueReducers.Raw(request.fetchAll))
+        return ValueObservation.tracking(request, fetch: request.fetchAll)
     }
     
     /// Creates a ValueObservation which observes *request*, and notifies

        -> ValueObservation<ValueReducers.UniqueRecords<Request.RowDecoder>>
        where Request.RowDecoder: FetchableRecord
    {
        return ValueObservation<ValueReducers.UniqueRecords<Request.RowDecoder>>(
            tracking: request.databaseRegion,
            reducer: ValueReducers.UniqueRecords { try Row.fetchAll($0, request) })
    }
    

        ValueObservation<ValueReducers.UniqueRecord<Request.RowDecoder>>
        where Request.RowDecoder: FetchableRecord
    {
        return ValueObservation<ValueReducers.UniqueRecord<Request.RowDecoder>>.tracking(
            request,
            reducer: ValueReducers.UniqueRecord { try Row.fetchOne($0, request) })
    }
}
