docs: function setupStaticViews() {
    
    var self = this;
    
    var staticPath = this.mvcpath + 'views/' + this.paths.static;
    var staticConfig = app.config.staticViews;
    var staticViewExt = staticConfig && staticConfig.defaultExtension && ('.' + staticConfig.defaultExtension.replace(/^\./, ''));
    var setEncoding = staticConfig && staticConfig.setEncoding;
    
    // Note: supports hot code reloading out of the box, because the internal
    // static view state is reset each time this function is called.
    
    this.views.static = [];
    
    this.views.staticAssoc = {};
    this.views.staticRaw = {};
    this.views.staticMime = {};
    this.views.staticExtOverride = {};
    
    var staticExtRaw = /\[(.*)\]\.raw$/;
    var staticExt = /\[(.*)\]$/;
    var staticRaw = /\.raw$/;
    
    if (fs.existsSync(staticPath)) {
      
      fileModule.walkSync(staticPath, function(dirPath, dirs, files) {
        for (var path,file,i=0; i < files.length; i++) {
          file = files[i];
          path = (dirPath + '/' + file).replace(/\/+/g, '/');
          path = self.relPath(path, 'app/views/' + self.paths.static.slice(0, -1));
          if (self.regex.templateFile.test(path)) self.views.static.push(path);
        }
      });
      
      // Associate static paths with their respective templates
      // For reference, see [STATIC_VIEW_EXTENSIONS]
      for (var ext, file, url, matches, i=0; i < this.views.static.length; i++) {
        ext = null;
        file = this.views.static[i];
        url = '/' + file.replace(this.regex.templateFile, '');
        if (staticExtRaw.test(url)) {
          matches = url.match(staticExtRaw); ext = matches[1];
          url = url.replace(staticExtRaw, '');
          if (ext) { // Ext can be empty because of file[].hbs
            url += ('.' + ext); // Add extension override
            this.views.staticMime[url] = mime.lookup(ext); // Use changed url (also set custom mime due to override)
            this.views.staticExtOverride[url] = ext; // Set static extension override
            this.views.staticRaw[url] = true; // Set to raw because of both extension override and .raw extension suffix
          }
        } else if (staticExt.test(url)) {
          matches = url.match(staticExt); ext = matches[1];
          url = url.replace(staticExt, '');
          if (ext) { // Ext can be empty because of file[].hbs
            url += ('.' + ext); // Add extension override
            this.views.staticMime[url] = mime.lookup(ext); // Use changed url (also set custom mime due to override)
            this.views.staticExtOverride[url] = ext; // Set static extension override
            this.views.staticRaw[url] = true; // Set to raw because of extension override in filename
          }
        } else if (staticRaw.test(url)) { // View doesnt' have extension
          url = url.replace(staticRaw, '');
          if (staticViewExt) {
            url += staticViewExt; // View has no ext, staticViewExt applies
            this.views.staticMime[url] = mime.lookup(staticViewExt);
          }
          this.views.staticRaw[url] = true; // Set to raw because of filename
        } else if (staticViewExt) {
          // NOTE: View is not set to raw, it uses the default content type and raw settings in config
          url += staticViewExt; // View has no ext, staticViewExt applies
          this.views.staticMime[url] = mime.lookup(staticViewExt); // Use changed url
        }
        // If url is not modified at this stage, use default content type
        this.views.staticAssoc[url] = file;
      }
      
    }
    
    // Emit static views init event
    this.emit('static_views_loaded', this.views); // Emit regardless
    
  }