diff --git a/README.md b/README.md
index 3b6efb0..24c2857 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ A Puppet command built on [YARD](http://yardoc.org/).
 Puppet Strings generates HTML documentation for Puppet extensions written in Puppet and Ruby.
 
 This tool will eventually place the existing `puppet doc` command once feature parity has been achieved.
- 
+
 |                |                                                                 |
 | -------------- |---------------------------------------------------------------- |
 | *Code*         | [GitHub][repo]                                                  |
@@ -169,7 +169,7 @@ define example_type(
 }
 ```
 
-***Note: unlike Ruby, Puppet 4.x is a typed language; Puppet Strings will automatically use the parameter type information to 
+***Note: unlike Ruby, Puppet 4.x is a typed language; Puppet Strings will automatically use the parameter type information to
 document the parameter types.  A warning will be emitted if you document a parameter's type for a parameter that has a Puppet type specifier.***
 
 ### Resource Types
@@ -185,17 +185,17 @@ An example resource type.
     param => 'hi'
   }
 DESC
-  
+
   newparam(:param) do
     desc 'An example parameter.'
     # ...
   end
-  
+
   newproperty(:prop) do
     desc 'An example property.'
     #...
   end
-   
+
   # ...  
 end
 ```
@@ -222,7 +222,7 @@ To document providers, use the `desc` method or assign a value to the `doc` attr
 ```ruby
 Puppet::Type.type(:example).provide :platform do
   desc 'An example provider.'
-  
+
   # ...
 end
 ```
@@ -273,12 +273,12 @@ Puppet::Functions.create_function(:example) do
     param 'String', :first
     param 'Integer', :second
   end
-  
+
   # ...
 end
 ```
 
-***Note: Puppet Strings will automatically use the parameter type information from the `dispatch` block to document 
+***Note: Puppet Strings will automatically use the parameter type information from the `dispatch` block to document
 the parameter types. Only document your parameter types when the Puppet 4.x function contains no `dispatch` calls.***
 
 If the Puppet 4.x function contains multiple `dispatch` calls, Puppet Strings will automatically create `overload` tags
@@ -295,7 +295,7 @@ Puppet::Functions.create_function(:example) do
   dispatch :example_string do
     param 'String', :first
   end
-  
+
   # Overload by integer.
   # @param first The first parameter.
   # @return [Integer] Returns an integer.
@@ -304,11 +304,11 @@ Puppet::Functions.create_function(:example) do
   dispatch :example_integer do
     param 'Integer', :first
   end
-  
+
   # ...
 ```
 
-The resulting HTML for this example function will document both `example(String $first)` and `example(Integer $first)`. 
+The resulting HTML for this example function will document both `example(String $first)` and `example(Integer $first)`.
 
 #### Puppet Language Functions
 
@@ -325,9 +325,32 @@ function example(String $name) {
 }
 ```
 
-***Note: Puppet Strings will automatically use the parameter type information from the function's parameter list to document 
+***Note: Puppet Strings will automatically use the parameter type information from the function's parameter list to document
 the parameter types.***
 
+Further examples
+----------------
+
+#### Using The `@example` Tag
+
+The `@example` YARD tag can be used to add usage examples to any Ruby or Puppet language code.
+
+```puppet
+# @example String describing what this example demonstrates.
+#   $content = example('world')
+#   if $content == 'world' {
+#     include world
+#   }
+function example(string $name) {
+  "hello $name"
+}
+```
+
+The string following the `@example` tag is an optional title which is displayed prominently above the code block.
+
+The example body must begin on a newline underneath the tag, and each line of the example itself must be indented by
+at least one space. Further indentation is preserved as preformatted text in the generated documentation.
+
 Additional Resources
 --------------------