docs: function(middlewares, controller, action, req, res, next, cb){
  
          var filename        = _(local.conf.bundlePath)
              , middleware    = null
              , constructor   = null
              , re            = new RegExp('^'+filename);
  
          if ( middlewares.length > 0 ) {
              for (var m=0; m<middlewares.length; ++m) {
                  constructor = middlewares[m].split(/\./g);
                  constructor = constructor
                      .splice(constructor.length-1,1)
                      .toString();
                  middleware = middlewares[m].split(/\./g);
                  middleware.splice(middleware.length-1);
                  middleware = middleware.join('/');
                  filename = _(filename +'/'+ middleware + '/index.js');
                  if ( !fs.existsSync( filename ) ) {
                      // no middleware found with this alias
                      throwError(res, 501, new Error('middleware not found '+ middleware).stack);
                  }
  
                  if (local.cacheless) delete require.cache[_(filename, true)];
  
                  var MiddlewareClass = function() {
  
                      return function () { // getting rid of the middleware context
  
                          var Middleware = require(_(filename, true));
                          // TODO - loop on a defiend SuperController property like SuperController._allowedForExport
  
  
                          // exporting config & common methods
                          //Middleware.engine             = controller.engine;
                          Middleware.prototype.getConfig              = controller.getConfig;
                          Middleware.prototype.getLocales             = controller.getLocales;
                          Middleware.prototype.getFormsRules          = controller.getFormsRules;
                          Middleware.prototype.throwError             = controller.throwError;
                          Middleware.prototype.redirect               = controller.redirect;
                          Middleware.prototype.render                 = controller.render;
                          Middleware.prototype.renderJSON             = controller.renderJSON;
                          Middleware.prototype.renderWithoutLayout    = controller.renderWithoutLayout
                          Middleware.prototype.isXMLRequest           = controller.isXMLRequest;
                          Middleware.prototype.isWithCredentials      = controller.isWithCredentials;
                          Middleware.prototype.isCacheless            = controller.isCacheless;
  
                          return Middleware;
                      }()
                  }();
  
                  middleware = new MiddlewareClass();
  
  
                  if ( !middleware[constructor] ) {
                      throwError(res, 501, new Error('contructor [ '+constructor+' ] not found @'+ middlewares[m]).stack);
                  }
  
                  if ( typeof(middleware[constructor]) != 'undefined') {
  
                      middleware[constructor](req, res, next,
                          function onMiddlewareProcessed(req, res, next){
                              middlewares.splice(m, 1);
                              if (middlewares.length > 0) {
                                  processMiddlewares(middlewares, controller, action,  req, res, next, cb)
                              } else {
                                  cb(action, req, res, next)
                              }
                          }
                      );
  
                      break
                  }
              }
  
          } else {
              cb(action, req, res, next)
          }
      }