diff --git a/src/data/source.js b/src/data/source.js
index <HASH>..<HASH> 100644
--- a/src/data/source.js
+++ b/src/data/source.js
@@ -7,7 +7,7 @@ import PromiseCache from './promise-cache';
 function protoReduce(obj, callback, state) {
   let cur = obj;
   let lifo = [];
-  
+
   do {
     lifo.push([callback, cur]);
     cur = cur.__proto__;
@@ -96,12 +96,13 @@ export default class DataSource {
       return Promise.resolve(this.runStep(methodName, 'prepare', params))
         .then(this.runStep.bind(this, methodName, 'serialize'))
         .then(this.runStep.bind(this, methodName, 'api'))
-        .then(this.runStep.bind(this, methodName, 'unserialize', params)) 
+        .then(this.runStep.bind(this, methodName, 'unserialize', params))
         .then(this.runStep.bind(this, methodName, 'process', params))
         .then(this.runStep.bind(this, methodName, 'outputType'));
     };
 
-    return this.invokeCached(methodName, func, params);
+    var prepared = this.runStep(methodName, 'prepare', params);
+    return this.invokeCached(methodName, func, prepared);
   }
 
   runStep(methodName, stepName, ...args) {
redev invokeMethods steps: start from serialize - so using this mehtod you could controll you dynamic parameters for method cache