diff --git a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
index 16780a6..de17787 100644
--- a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
@@ -64,7 +64,7 @@
     extends AbstractArtifactWithRepositoryTask
 {
     private static final String[] SCOPES = { Artifact.SCOPE_COMPILE, Artifact.SCOPE_PROVIDED, Artifact.SCOPE_RUNTIME,
-        Artifact.SCOPE_TEST };
+        Artifact.SCOPE_TEST, Artifact.SCOPE_SYSTEM };
 
     private static final Set<String> SCOPES_SET;
     static
diff --git a/src/site/apt/examples/dependencies.apt b/src/site/apt/examples/dependencies.apt
index ef8c32a..8171a46 100644
--- a/src/site/apt/examples/dependencies.apt
+++ b/src/site/apt/examples/dependencies.apt
@@ -134,8 +134,8 @@
 Note about system scope
 
   Dependencies that use the <<<system>>> scope specify a path on the local system that may be outside
-  of the local maven repository.  An Ant fileset only allows a single base directory, so these 
-  dependencies will not be included in the generated fileset object.  The will, however, be included
+  of the local maven repository.  An Ant fileset only allows a single base directory, so these
+  dependencies will not be included in the generated fileset for resolved dependencies. They will, however, be included
   in the path object.
 
 Filtering Dependencies by Scope
@@ -148,14 +148,14 @@
   can be set to one of three possible scopes: compile, runtime, or test.  These scopes will
   behave as follows.
 
-    * compile - Includes scopes compile, system, and provided
+    * <<<compile>>> - Includes scopes <<<compile>>>, <<<system>>> and <<<provided>>>
 
-    * runtime - Includes scopes compile and runtime
+    * <<<runtime>>> - Includes scopes <<<compile>>> and <<<runtime>>>
 
-    * test - Includes scopes system, provided, compile, runtime, and test
+    * <<<test>>> - Includes scopes <<<system>>>, <<<provided>>>, <<<compile>>>, <<<runtime>>> and <<<test>>>
 
-  For example, using the scope <<<runtime>>>, any dependencies defined with compile,
-  runtime, or nothing (defaults to compile) in the scope field will be included in
+  For example, using the scope <<<runtime>>>, any dependencies defined with <<<compile>>>,
+  <<<runtime>>>, or nothing (defaults to <<<compile>>>) in the <<<scope>>> field will be included in
   the resulting fileset.
 
 -----
@@ -165,9 +165,9 @@
 -----
 
   <(Since 2.0.10)> The <<<scopes>>> attribute accepts a comma separated list of scopes to
-  include in the filtering.   Only dependencies with these specific scopes will be
+  include in the filtering. Only dependencies with these specific scopes will be
   included in the resulting fileset.  If no value is specified, all scopes are included.
-  The following example includes only dependencies with a scope of either "provided" or "test".
+  The following example includes only dependencies with a scope of either <<<provided>>> or <<<test>>>.
 
 -----
     <artifact:dependencies filesetId="deps.fileset" scopes="provided, test">
@@ -178,8 +178,8 @@
 
 Filtering Dependencies by Type
 
-  Dependencies can be filterd by type by using the <<<type>>> attribute.  This can be set to a
-  comma separate list of the types to select.  The following example will only include artifacts of the jar type.
+  Dependencies can be filtered by type by using the <<<type>>> attribute.  This can be set to a
+  comma separated list of the types to select. The following example will only include artifacts of the <<<jar>>> type.
 
 -----
     <artifact:dependencies filesetId="deps.fileset" type="jar">
@@ -187,24 +187,24 @@
     </artifact:dependencies>
 -----
 
-  By default all artifact types will be included when building the list of dependencies.
+  By default, all artifact types will be included when building the list of dependencies.
 
-  
-Generating an Ant build with the dependency properties and references 
+
+Generating an Ant build with the dependency properties and references
 
   <(Since 2.1.0)>  For a project with a large dependency tree, the resolution process can take some time.
   In these cases, the dependencies task provides an option to generate an Ant build file (called build-dependencies.xml
-  by default) that contains properties and references generated by the dependency resolution.  This file can be 
-  used as a cache to quicly load the paths to the dependency artifacts.  Or it can be used directly in
+  by default) that contains properties and references generated by the dependency resolution.  This file can be
+  used as a cache to quickly load the paths to the dependency artifacts.  Or it can be used directly in
   other ant build files via the <<import>> task.
-  
-  There are two parameters to the dependencies task related to this feature <<cacheDependencyRefs>> and 
+
+  There are two parameters to the dependencies task related to this feature <<cacheDependencyRefs>> and
   <<dependencyRefsBuildFile>>.  The first is a boolean parameter to say whether the build file should be
   generated.  By default the file will be created as "./target/build-dependencies.xml".  The second parameter
   allows the default file name to be changed.
-  
+
   For example, to turn on the dependency cache, the following configuration could be used.
-  
+
 -----
     <artifact:dependencies cacheDependencyRefs="true">
       <pom file="mypom.xml"/>
@@ -214,7 +214,7 @@
   The first time the build is run, the dependencies will be resolved from the repository, and the task
   will generate a file called "build-dependencies.xml".  This file contains a list of the properties
   and fileset references generated during the build.  The next time the build is run, the dependency
-  references will simply be loaded from the generate file. 
-  
-  
-  
+  references will simply be loaded from the generate file.
+
+
+
diff --git a/src/site/apt/reference.apt b/src/site/apt/reference.apt
index 7eafa57..9010994 100644
--- a/src/site/apt/reference.apt
+++ b/src/site/apt/reference.apt
@@ -56,7 +56,7 @@
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
 | <<<type>>>              | A comma separated list of artifact types to be retrieved. By default all artifact types will be included.   | No     |    |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
-| <<<useScope>>>          | Follows the maven scope behaviour.  Can be set to <<<compile>>>, <<<runtime>>>, or <<<test>>>.  If no value is provided, all scopes will be included.  | No   |    |
+| <<<useScope>>>          | Follows the Maven scope behaviour.  Can be set to <<<compile>>>, <<<runtime>>>, or <<<test>>>.  If no value is provided, all scopes will be included.  | No   |    |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
 | <<<scopes>>>            | A comma separated list of specific scopes to be retrieved.  If no value is provided, all scopes will be included.  | No   |  2.0.10  |
 *-------------------------+---------------------------------------------------------------------------+--------------+-------------+
@@ -87,7 +87,8 @@
 
 ** <<<dependency>>>
 
-  ~~ TODO: Is system scope supported, in the table below?
+  Dependency definition is done in Maven Ant Tasks exactly like it is done in Maven: it is summarized here, but you can look at
+  {{{http://maven.apache.org/ref/current/maven-model/maven.html#class_dependency} the reference documentation}} for more information.
 
 *------------------+--------------------------------------------------------+--------------+
 | <<Attribute>>    | <<Description>>                                        | <<Required>> |
@@ -102,11 +103,20 @@
 *------------------+--------------------------------------------------------+--------------+
 | <<<classifier>>> | The classifier of the dependency.                      | No           |
 *------------------+--------------------------------------------------------+--------------+
-| <<<scope>>>      | The scope of the usage of the dependency, which {{{http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope}} affects which of that dependency's own dependencies are also retrieved}. This can be <<<compile>>> (default), <<<runtime>>>, <<<test>>>, <<<provided>>>. | No |
+| <<<scope>>>      | The scope of the usage of the dependency, which {{{http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope}} affects which of that dependency's own dependencies are also retrieved}. This can be <<<compile>>> (default), <<<runtime>>>, <<<test>>>, <<<provided>>> or <<<system>>>. | No |
+*------------------+--------------------------------------------------------+--------------+
+| <<<systemPath>>> | FOR SYSTEM SCOPE ONLY. This specifies the path on the filesystem for this dependency. | No |
 *------------------+--------------------------------------------------------+--------------+
 
   The dependency can also nest multiple <<<exclusion>>> elements.
 
+*** Note about system scope
+
+  Dependencies that use the <<<system>>> scope specify a path on the local system that may be outside
+  of the local maven repository.  An Ant fileset only allows a single base directory, so these
+  dependencies will not be included in the generated fileset for resolved dependencies. They will, however, be included
+  in the path object.
+
 *** <<<exclusion>>>
 
   An exclusion can be used to prevent the resolution of a particular artifact in the tree of the <<<dependency>>>.
