     end
   end
 
+  defmacro s({ { :., _, [mod, fun] }, _, [] }) do
+    quote do
+      s(unquote(mod), unquote(fun))
+    end    
+  end
+
   defmacro s(module) do
     quote do
-      s(unquote(module), :all)
-    end
-  end
-
-  @doc false
-  def s(module, :all) do
-    specs = lc spec inlist Kernel.Typespec.beam_specs(module), do: print_spec(spec)
-
-    if specs == [] do
-      IO.puts "No specs for #{inspect module} have been found"
-    end
-
-    :ok
-  end
-
-  @doc """
-  Prints the specs for a given function.
+      s(unquote(module), [])
+    end
+  end
+
+  @doc """
+  Prints the specs for a given MFA.
 
   ## Examples
 
       s(Enum.all?/2)
-      s(Enum.t/0)
 
   """
   def s(module, function, arity) do

      print_spec(spec)
    else
      IO.puts "No specs for #{inspect module}.#{function}/#{arity} have been found"
    end

    :ok


      t(Enum)
      t(Enum.t/0)
      t(Enum.t)

  """
  defmacro t({ :/, _, [{ { :., _, [mod, fun] }, _, [] }, arity] }) do
