   _viewClassForAction: (action) ->
     classPrefix = @get('routingKey').replace('/', '_')
     Batman.currentApp?[Batman.helpers.camelize("#{classPrefix}_#{action}_view")] || Batman.View
-
-  _runFilters: (action, params, filters) ->
-    if filters = @constructor._batman?.get(filters)
-      for options in filters
-        continue if options.only and action not in options.only
-        continue if options.except and action in options.except
-        return if @_afterFilterRedirect
-
-        block = options.block
-        if typeof block is 'function' then block.call(@, params) else @[block]?(params)

        @_afterFilterRedirect = url
    else
      if Batman.typeOf(url) is 'Object'
        url.controller = @ if not url.controller

      Batman.redirect url


    @executeAction(action, params)

    redirectTo = @_afterFilterRedirect
    @_afterFilterRedirect = null
    delete @_afterFilterRedirect

    Batman.redirect(redirectTo) if redirectTo

  executeAction: (action, params = @get('params')) ->
    Batman.developer.assert @[action], "Error! Controller action #{@get('routingKey')}.#{action} couldn't be found!"

    parentFrame = @_actionFrames[@_actionFrames.length - 1]
    frame = new Batman.ControllerActionFrame {parentFrame, action}, =>
      @fireLifecycleEvent('afterFilter', params) if not @_afterFilterRedirect
      @_resetActionFrames()
      Batman.navigator?.redirect = oldRedirect

    @_actionFrames.push(frame)
    frame.startOperation(internal: true)

    oldRedirect = Batman.navigator?.redirect
    Batman.navigator?.redirect = @redirect

    @fireLifecycleEvent('beforeFilter', params)
    result = @[action](params) if not @_afterFilterRedirect

    @render() if not frame.operationOccurred
    frame.finishOperation()
