# File lib/merb-slices/controller_mixin.rb, line 63
        def controller_for_slice(slice_module = nil, options = {})
          options, slice_module = slice_module.merge(options), nil if slice_module.is_a?(Hash)
          slice_module ||= self.name.split('::').first
          options[:templates_for] = :view unless options.key?(:templates_for)
          if slice_mod = Merb::Slices[slice_module.to_s]
            # Include the instance methods
            unless self.kind_of?(Merb::Slices::ControllerMixin::MixinMethods)
              self.send(:extend, Merb::Slices::ControllerMixin::MixinMethods)
            end
            # Reference this controller's slice module
            self.class_inheritable_accessor :slice, :instance_writer => false
            self.slice = slice_mod
            # Setup template roots
            if options[:templates_for]
              self._template_root  = join_template_path(slice_mod.dir_for(options[:templates_for]), options[:path])
              self._template_roots = []
              # app-level app/views directory for shared and fallback views, layouts and partials
              self._template_roots << [join_template_path(Merb.dir_for(options[:templates_for]), options[:path]), :_template_location] if Merb.dir_for(options[:templates_for])
              # slice-level app/views for the standard supplied views
              self._template_roots << [self._template_root, :_slice_template_location] 
              # app-level slices/<slice>/app/views for specific overrides
              self._template_roots << [join_template_path(slice_mod.app_dir_for(options[:templates_for]), options[:path]), :_slice_template_location]
              # additional template roots for specific overrides (optional)
              self._template_roots += Array(options[:template_roots]) if options[:template_roots]
            end
            # Set the layout for this slice controller
            layout_for_slice(options[:layout])
          end
        end