def template_paths
extension_glob = "{#{Merb::Template.template_extensions.join(',')}}"
controller_view_paths = []
Merb::AbstractController._abstract_subclasses.each do |klass|
next if (const = Object.full_const_get(klass))._template_root.blank?
controller_view_paths += const._template_roots.map { |pair| pair.first }
end
template_paths = controller_view_paths.uniq.compact.map { |path| Dir["#{path}/**/*.#{extension_glob}"] }
template_paths << Dir["#{Merb.dir_for(:view)}/**/*.#{extension_glob}"] if Merb.dir_for(:view)
template_paths.flatten.compact.uniq.grep(%r{^.*/[^_][^/]*$})
end