 
         dfd = @sandbox.data.deferred()
         datasourceErrors = {}
+        @data = {}
         try
           keys = _.keys(@datasources)
           promises  = _.map keys, (k)=>
-            promiseDfd = @sandbox.data.deferred()
             ds = @datasources[k]
             ds.parse(_.extend({}, @, @options || {}))
-            ds.fetch().then (res)->
+            promiseDfd = @sandbox.data.deferred()
+            ds.fetch().then (res)=>
+              @data[k] = res
+              if _.isFunction res?.toJSON
+                ret[k] = res.toJSON()
+              else if _.isArray(res) && res[1] == 'success' && res[2].status == 200
+                ret[k] = res[0]
+              else
+                ret[k] = res
               promiseDfd.resolve(res)
             , (err)=>
               handler = @["on#{_.string.capitalize(_.string.camelize(k))}Error"]

            console.error("Error in Building Render Context", err.message, err)
            @renderError.call(@, err.message, err)
            dfd.reject(err)
          readyDfd.done ()=>
            dfd.resolve(ret)

        catch e

              datasourceErrors[k] = err
              promiseDfd.resolve(handler err)
            promiseDfd
          widgetDeferred = @sandbox.data.when.apply(undefined, promises)
          templateDeferred = @sandbox.template.load(@templates, @ref)
          templateDeferred.done (tpls)=>
            @_templates     = tpls
