diff --git a/core/API/Request.php b/core/API/Request.php
index 76ee0791bea62946de6c73fa38e8fd83049f27c0..4edc8214654e6ee08761725880b8b5ca3d9a9854 100644
--- a/core/API/Request.php
+++ b/core/API/Request.php
@@ -25,14 +25,24 @@ use Piwik\UrlHelper;
  * 
  * The Request class is used throughout Piwik to call API methods. The difference
  * between using Request and calling API methods directly is that Request
- * will do more after calling the API including: apply generic filters, apply queued filters,
- * and handle the **flat** and **label** query parameters.
+ * will do more after calling the API including: applying generic filters, applying queued filters,
+ * and handling the **flat** and **label** query parameters.
  * 
  * Additionally, the Request class will **forward current query parameters** to the request
  * which is more convenient than calling {@link Piwik\Common::getRequestVar()} many times over.
  * 
- * In most cases, using a Request object to query the API is the right way to go.
+ * In most cases, using a Request object to query the API is the correct approach.
  *
+ * ### Post-processing
+ * 
+ * The return value of API methods undergo some extra processing before being returned by Request.
+ * To learn more about what happens to API results, read [this](/guides/piwiks-web-api#extra-report-processing).
+ *
+ * ### Output Formats
+ * 
+ * The value returned by Request will be serialized to a certain format before being returned.
+ * To see the list of supported output formats, read [this](/guides/piwiks-web-api#output-formats).
+ * 
  * ### Examples
  * 
  * **Basic Usage**
@@ -44,14 +54,15 @@ use Piwik\UrlHelper;
  * 
  * **Getting a unrendered DataTable**
  * 
- *     // use convenience the convenience method 'processRequest'
+ *     // use the convenience method 'processRequest'
  *     $dataTable = Request::processRequest('UserSettings.getWideScreen', array(
  *         'idSite' => 1,
  *         'date' => 'yesterday',
  *         'period' => 'week',
- *         'format' => 'original', // this is the important bit
  *         'filter_limit' => 5,
  *         'filter_offset' => 0
+ * 
+ *         'format' => 'original', // this is the important bit
  *     ));
  *     echo "This DataTable has " . $dataTable->getRowsCount() . " rows.";
  *
@@ -112,10 +123,10 @@ class Request
     /**
      * Constructor.
      *
-     * @param string $request GET request that defines the API call (must at least contain a **method** parameter),
-     *                        eg, `'method=UserSettings.getWideScreen&idSite=1&date=yesterday&period=week&format=xml'`
-     *                        If a request is not provided, then we use the $_GET and $_POST superglobal and fetch
-     *                        the values directly from the HTTP GET query.
+     * @param string|array $request Query string that defines the API call (must at least contain a **method** parameter),
+     *                              eg, `'method=UserSettings.getWideScreen&idSite=1&date=yesterday&period=week&format=xml'`
+     *                              If a request is not provided, then we use the values in the `$_GET` and `$_POST`
+     *                              superglobals.
      */
     public function __construct($request = null)
     {
@@ -169,8 +180,12 @@ class Request
      * - running generic filters unless **disable_generic_filters** is set to 1
      * - URL decoding label column values
      * - running queued filters unless **disable_queued_filters** is set to 1
-     * - removes columns based on the values of the **hideColumns** and **showColumns** query parameters
-     * - filters rows if the **label** query parameter is set
+     * - removing columns based on the values of the **hideColumns** and **showColumns** query parameters
+     * - filtering rows if the **label** query parameter is set
+     * - converting the result to the appropriate format (ie, XML, JSON, etc.)
+     * 
+     * If `'original'` is supplied for the output format, the result is returned as a PHP
+     * object.
      * 
      * @throws PluginDeactivatedException if the module plugin is not activated.
      * @throws Exception if the requested API method cannot be called, if required parameters for the
@@ -212,10 +227,10 @@ class Request
     }
 
     /**
-     * Returns the class name of a plugin's API given the plugin name.
+     * Returns the name of a plugin's API class by plugin name.
      * 
-     * @param string $plugin The plugin name.
-     * @return string
+     * @param string $plugin The plugin name, eg, `'Referrers'`.
+     * @return string The fully qualified API class name, eg, `'\Piwik\Plugins\Referrers\API'`.
      */
     static public function getClassNameAPI($plugin)
     {
@@ -254,7 +269,7 @@ class Request
     }
 
     /**
-     * Returns array( $class, $method) from the given string $class.$method
+     * Returns array($class, $method) from the given string $class.$method
      *
      * @param string $parameter
      * @throws Exception
@@ -273,10 +288,10 @@ class Request
      * Helper method that processes an API request in one line using the variables in `$_GET`
      * and `$_POST`.
      *
-     * @param string $method The API method to call, ie, Actions.getPageTitles
+     * @param string $method The API method to call, ie, `'Actions.getPageTitles'`.
      * @param array $paramOverride The parameter name-value pairs to use instead of what's
-     *                             in $_GET & $_POST.
-     * @return mixed The result of the API request.
+     *                             in `$_GET` & `$_POST`.
+     * @return mixed The result of the API request. See {@link process()}.
      */
     public static function processRequest($method, $paramOverride = array())
     {
@@ -293,7 +308,7 @@ class Request
 
     /**
      * Returns the original request parameters in the current query string as an array mapping
-     * query parameter names with values. This result of this function will not be affected
+     * query parameter names with values. The result of this function will not be affected
      * by any modifications to `$_GET` and will not include parameters in `$_POST`.
      * 
      * @return array
@@ -308,7 +323,7 @@ class Request
     }
 
     /**
-     * Returns URL for the current requested report w/o any filter parameters.
+     * Returns the URL for the current requested report w/o any filter parameters.
      *
      * @param string $module The API module.
      * @param string $action The API action.
@@ -360,7 +375,7 @@ class Request
     }
 
     /**
-     * Returns the unmodified segment from the original request.
+     * Returns the segment query parameter from the original request, without modifications.
      * 
      * @return array|bool
      */
diff --git a/core/ArchiveProcessor.php b/core/ArchiveProcessor.php
index 435fb69ad940bc312418ded58f4f9927150d8513..6aa62cdc9d2b9e9b25be6676f601c97819fbb1df 100644
--- a/core/ArchiveProcessor.php
+++ b/core/ArchiveProcessor.php
@@ -22,24 +22,7 @@ use Piwik\Db;
 use Piwik\Period;
 
 /**
- * Used to insert numeric and blob archive data, and to aggregate archive data.
- *
- * During the Archiving process an instance of this class is used by plugins
- * to cache aggregated analytics statistics.
- * 
- * When the {@link Archive} class is used to query for archive data and that archive
- * data is found to be absent, the archiving process is launched. Instances of the
- * {@link Piwik\Plugin\Archiver} classes for every plugin that supplies one are
- * then used to execute archiving logic.
- * 
- * Plugins access ArchiveProcessor instances through the {@link Piwik\Plugin\Archiver} class.
- * Read the docs for {@link Piwik\Plugin\Archiver} to learn more about the process.
- * 
- * ### Limitations
- * 
- * - It is currently only possible to aggregate statistics for one site and period
- * at a time. The archive.php cron script does, however, issue asynchronous HTTP
- * requests that initiate archiving, so statistics can be calculated in parallel.
+ * Used by {@link Piwik\Plugin\Archiver} instances to insert and aggregate archive data.
  * 
  * ### See also
  * 
@@ -52,7 +35,7 @@ use Piwik\Period;
  * 
  * **Inserting numeric data**
  * 
- *     // function in an Archiver descendent
+ *     // function in an Archiver descendant
  *     public function aggregateDayReport()
  *     {
  *         $archiveProcessor = $this->getProcessor();
@@ -63,7 +46,7 @@ use Piwik\Period;
  * 
  * **Inserting serialized DataTables**
  * 
- *     // function in an Archiver descendent
+ *     // function in an Archiver descendant
  *     public function aggregateDayReport()
  *     {
  *         $archiveProcessor = $this->getProcessor();
@@ -79,7 +62,7 @@ use Piwik\Period;
  * 
  * **Aggregating archive data**
  * 
- *     // function in Archiver descendent
+ *     // function in Archiver descendant
  *     public function aggregateMultipleReports()
  *     {
  *         $archiveProcessor = $this->getProcessor();
@@ -147,7 +130,8 @@ class ArchiveProcessor
     }
 
     /**
-     * Returns the Parameters object containing the site, period and segment used with this archive.
+     * Returns the {@link Parameters} object containing the site, period and segment we're archiving
+     * data for.
      *
      * @return Parameters
      * @api
@@ -188,20 +172,19 @@ class ArchiveProcessor
      * @param int $maximumRowsInDataTableLevelZero Maximum number of rows allowed in the top level DataTable.
      * @param int $maximumRowsInSubDataTable Maximum number of rows allowed in each subtable.
      * @param string $columnToSortByBeforeTruncation The name of the column to sort by before truncating a DataTable.
-     * @param array $columnsAggregationOperation Operations for aggregating columns, @see Row::sumRow().
-     * @param array $columnsToRenameAfterAggregation For columns that must change names when summed because they
-     *                                                    cannot be summed, eg,
-     *                                                    `array('nb_uniq_visitors' => 'sum_daily_nb_uniq_visitors')`.
+     * @param array $columnsAggregationOperation Operations for aggregating columns, see {@link Row::sumRow()}.
+     * @param array $columnsToRenameAfterAggregation Columns mapped to new names for columns that must change names
+     *                                               when summed because they cannot be summed, eg,
+     *                                               `array('nb_uniq_visitors' => 'sum_daily_nb_uniq_visitors')`.
      * @return array Returns the row counts of each aggregated report before truncation, eg,
-     *               ```
-     *               array(
-     *                   'report1' => array('level0' => $report1->getRowsCount,
-     *                                      'recursive' => $report1->getRowsCountRecursive()),
-     *                   'report2' => array('level0' => $report2->getRowsCount,
-     *                                      'recursive' => $report2->getRowsCountRecursive()),
-     *                   ...
-     *               )
-     *               ```
+     *               
+     *                   array(
+     *                       'report1' => array('level0' => $report1->getRowsCount,
+     *                                          'recursive' => $report1->getRowsCountRecursive()),
+     *                       'report2' => array('level0' => $report2->getRowsCount,
+     *                                          'recursive' => $report2->getRowsCountRecursive()),
+     *                       ...
+     *                   )
      * @api
      */
     public function aggregateDataTableRecords($recordNames,
@@ -241,12 +224,12 @@ class ArchiveProcessor
      * @return array|int Returns the array of aggregate values. If only one metric was aggregated,
      *                   the aggregate value will be returned as is, not in an array.
      *                   For example, if `array('nb_visits', 'nb_hits')` is supplied for `$columns`,
-     *                   ```
-     *                   array(
-     *                       'nb_visits' => 3040,
-     *                       'nb_hits' => 405
-     *                   )
-     *                   ```
+     *                   
+     *                       array(
+     *                           'nb_visits' => 3040,
+     *                           'nb_hits' => 405
+     *                       )
+     *                   
      *                   could be returned. If `array('nb_visits')` or `'nb_visits'` is used for `$columns`,
      *                   then `3040` would be returned.
      * @api
@@ -286,9 +269,8 @@ class ArchiveProcessor
      *
      * @param array $numericRecords A name-value mapping of numeric values that should be
      *                              archived, eg,
-     *                              ```
-     *                              array('Referrers_distinctKeywords' => 23, 'Referrers_distinctCampaigns' => 234)
-     *                              ```
+     *                              
+     *                                  array('Referrers_distinctKeywords' => 23, 'Referrers_distinctCampaigns' => 234)
      * @api
      */
     public function insertNumericRecords($numericRecords)
@@ -302,7 +284,7 @@ class ArchiveProcessor
      * Caches a single numeric record in the archive for this processor's site, period and
      * segment.
      *
-     * Numeric values are not inserted if they equal 0.
+     * Numeric values are not inserted if they equal `0`.
      *
      * @param string $name The name of the numeric value, eg, `'Referrers_distinctKeywords'`.
      * @param float $value The numeric value.
diff --git a/core/ArchiveProcessor/Parameters.php b/core/ArchiveProcessor/Parameters.php
index 7ac9129b3b458db17cca6c4f624eb3abeb6e3dbd..25db149f2f4ac8c23a9ae21621d3f4e1c3426bab 100644
--- a/core/ArchiveProcessor/Parameters.php
+++ b/core/ArchiveProcessor/Parameters.php
@@ -19,9 +19,9 @@ use Piwik\Segment;
 use Piwik\Site;
 
 /**
- * An ArchiveProcessor processes data for an Archive determined by these Parameters: website, period and segment.
- *
- * @api
+ * Contains the analytics parameters for the reports that are currently being archived. The analytics
+ * parameters include the **website** the reports describe, the **period** of time the reports describe
+ * and the **segment** used to limit the visit set.
  */
 class Parameters
 {
@@ -45,6 +45,11 @@ class Parameters
      */
     private $requestedPlugin = false;
 
+    /**
+     * Constructor.
+     * 
+     * @ignore
+     */
     public function __construct(Site $site, Period $period, Segment $segment)
     {
         $this->site = $site;
@@ -69,7 +74,7 @@ class Parameters
     }
 
     /**
-     * Returns the period we computing statistics for.
+     * Returns the period we are computing statistics for.
      *
      * @return Period
      * @api
@@ -83,6 +88,7 @@ class Parameters
      * Returns the array of Period which make up this archive.
      *
      * @return \Piwik\Period[]
+     * @ignore
      */
     public function getSubPeriods()
     {
@@ -94,6 +100,7 @@ class Parameters
 
     /**
      * @return array
+     * @ignore
      */
     public function getIdSites()
     {
@@ -129,7 +136,7 @@ class Parameters
     }
 
     /**
-     * Returns the Date end of this period.
+     * Returns the end day of the period in the site's timezone.
      *
      * @return Date
      */
@@ -139,7 +146,7 @@ class Parameters
     }
 
     /**
-     * Returns the Date start of this period.
+     * Returns the start day of the period in the site's timezone.
      *
      * @return Date
      */
@@ -180,5 +187,4 @@ class Parameters
             $this->getDateEnd()->getDateEndUTC()
         );
     }
-
 }
\ No newline at end of file
diff --git a/core/Common.php b/core/Common.php
index a65559943441569c96814e6be08a03b2369a157e..26dec8e25e097e28dd127aef838fd4ee5a52706d 100644
--- a/core/Common.php
+++ b/core/Common.php
@@ -18,7 +18,7 @@ use Piwik\Tracker\Cache;
 /**
  * Contains helper methods used by both Piwik Core and the Piwik Tracking engine.
  *
- * This is the only external class loaded by the /piwik.php file.
+ * This is the only non-Tracker class loaded by the **\/piwik.php** file.
  *
  * @package Piwik
  */
@@ -201,24 +201,24 @@ class Common
      * This function is automatically called when {@link getRequestVar()} is called,
      * so you should not normally have to use it.
      * 
-     * You should used it when outputting data that isn't escaped and was
+     * This function should be used when outputting data that isn't escaped and was
      * obtained from the user (for example when using the `|raw` twig filter on goal names).
      * 
-     * NOTE: Sanitized input should not be used directly in an SQL query; SQL placeholders
-     *       should still be used.
+     * _NOTE: Sanitized input should not be used directly in an SQL query; SQL placeholders
+     * should still be used._
      * 
      * **Implementation Details**
      * 
-     * - `htmlspecialchars` is used to escape text.
-     * - Single quotes are not escaped so "Piwik's amazing community" will still be
-     *   "Piwik's amazing community".
+     * - [htmlspecialchars](http://php.net/manual/en/function.htmlspecialchars.php) is used to escape text.
+     * - Single quotes are not escaped so **Piwik's amazing community** will still be
+     *   **Piwik's amazing community**.
      * - Use of the `magic_quotes` setting will not break this method.
-     * - Boolean, numeric and null values are simply returned.
+     * - Boolean, numeric and null values are not modified.
      *
-     * @param mixed $value The variable to be cleaned. If an array is supplied, the contents
+     * @param mixed $value The variable to be sanitized. If an array is supplied, the contents
      *                     of the array will be sanitized recursively. The keys of the array
      *                     will also be sanitized.
-     * @param bool $alreadyStripslashed
+     * @param bool $alreadyStripslashed Implementation detail, ignore.
      * @throws Exception If `$value` is of an incorrect type.
      * @return mixed  The sanitized value.
      * @api
@@ -299,10 +299,10 @@ class Common
      * the user.
      * 
      * Some data in Piwik is stored sanitized (such as site name). In this case you may
-     * have to use this method to unsanitize it after it is retrieved.
+     * have to use this method to unsanitize it in order to, for example, output it in JSON.
      * 
-     * @param string|array $value The data to unsanitize. If an array is passed the
-     *                            array is sanitized recursively. Keys are not unsanitized.
+     * @param string|array $value The data to unsanitize. If an array is passed, the
+     *                            array is sanitized recursively. Key values are not unsanitized.
      * @return string|array The unsanitized data.
      * @api
      */
@@ -349,18 +349,19 @@ class Common
      * 
      * Use this function to get request parameter values. **_NEVER use `$_GET` and `$_POST` directly._**
      * 
-     * If the variable doesn't have neither a value nor a default value provided, an exception is raised.
+     * If the variable cannot be found, and a default value was not provided, an exception is raised.
      *
-     * @see sanitizeInputValues() for the applied sanitization
+     * _See {@link sanitizeInputValues()} to learn more about sanitization._
      *
-     * @param string $varName Name of the request parameter to get. We look in `$_GET[$varName]` and `$_POST[$varName]`
-     *                        for the value.
-     * @param string|null $varDefault The value to return if the request parameter doesn't exist or has an empty value.
-     * @param string|null $varType Expected type, the value must be one of the following: `'array'`, `'int'`, `'integer'`,
-     *                             `'string'`, `'json'`. If `'json'`, the string value will be `json_decode`-d and all of
-     *                             entries sanitized.
-     * @param array|null $requestArrayToUse The array to use instead of $_GET and $_POST.
-     * @throws Exception If the request parameter doesn't exist and there is no default value or if the request parameter
+     * @param string $varName Name of the request parameter to get. By default, we look in `$_GET[$varName]`
+     *                        and `$_POST[$varName]` for the value.
+     * @param string|null $varDefault The value to return if the request parameter cannot be found or has an empty value.
+     * @param string|null $varType Expected type of the request variable. This parameters value must be one of the following:
+     *                             `'array'`, `'int'`, `'integer'`, `'string'`, `'json'`.
+     *                             
+     *                             If `'json'`, the string value will be `json_decode`-d and then sanitized.
+     * @param array|null $requestArrayToUse The array to use instead of `$_GET` and `$_POST`.
+     * @throws Exception If the request parameter doesn't exist and there is no default value, or if the request parameter
      *                   exists but has an incorrect type.
      * @return mixed The sanitized request parameter.
      * @api
@@ -687,10 +688,10 @@ class Common
     /**
      * Returns the list of valid language codes.
      *
-     * @see core/DataFiles/Languages.php
+     * See [core/DataFiles/Languages.php](https://github.com/piwik/piwik/blob/master/core/DataFiles/Languages.php).
      *
-     * @return array Array of two letter ISO codes mapped with language name (in English). E.g.
-     *               `array('en' => 'English')`.
+     * @return array Array of two letter ISO codes mapped with their associated language names (in English). E.g.
+     *               `array('en' => 'English', 'ja' => 'Japanese')`.
      * @api
      */
     public static function getLanguagesList()
@@ -702,12 +703,12 @@ class Common
     }
 
     /**
-     * Returns list of language to country mappings.
+     * Returns a list of language to country mappings.
      *
-     * @see core/DataFiles/LanguageToCountry.php
+     * See [core/DataFiles/LanguageToCountry.php](https://github.com/piwik/piwik/blob/master/core/DataFiles/LanguageToCountry.php).
      *
      * @return array Array of two letter ISO language codes mapped with two letter ISO country codes:
-     *               `array('fr' => 'fr'), // French => France`
+     *               `array('fr' => 'fr') // French => France`
      * @api
      */
     public static function getLanguageToCountryList()
@@ -947,11 +948,13 @@ class Common
      */
 
     /**
-     * Returns a string with a comma separated list of placeholders for use in an SQL query based
-     * on the list of fields we're referencing. Used mainly to fill the `IN (...)` part of a query.
+     * Returns a string with a comma separated list of placeholders for use in an SQL query. Used mainly
+     * to fill the `IN (...)` part of a query.
      * 
      * @param array|string $fields The names of the mysql table fields to bind, e.g.
      *                             `array(fieldName1, fieldName2, fieldName3)`.
+     * 
+     *                             _Note: The content of the array isn't important, just its length._
      * @return string The placeholder string, e.g. `"?, ?, ?"`.
      * @api
      */
@@ -995,10 +998,10 @@ class Common
     }
 
     /**
-     * Mark orphaned object for garbage collection.
+     * Marks an orphaned object for garbage collection.
      *
-     * For more information: @link http://dev.piwik.org/trac/ticket/374
-     * @param $var
+     * For more information: {@link http://dev.piwik.org/trac/ticket/374}
+     * @param $var The object to destroy.
      * @api
      */
     static public function destroy(&$var)
diff --git a/core/DataAccess/LogAggregator.php b/core/DataAccess/LogAggregator.php
index 43fdb295d55db3e55d576d7604aa14b9d8fa7f07..3f065193b0f37cb36489473b73a0959016363595 100644
--- a/core/DataAccess/LogAggregator.php
+++ b/core/DataAccess/LogAggregator.php
@@ -20,22 +20,20 @@ use Piwik\Metrics;
 use Piwik\Tracker\GoalManager;
 
 /**
- * Contains methods that aggregates log data (visits, actions, conversions, ecommerce).
+ * Contains methods that calculate metrics by aggregating log data (visits, actions, conversions,
+ * ecommerce items).
  * 
- * Plugin {@link Piwik\Plugin\Archiver} descendants can use the methods in this class to aggregate data
- * in the log tables without creating their own SQL queries.
+ * You can use the methods in this class within {@link Piwik\Plugin\Archiver Archiver} descendants
+ * to aggregate log data without having to write SQL queries.
  * 
- * ### Aggregation Principles
+ * ### Aggregation Dimension
  * 
- * **Dimensions**
+ * All aggregation methods accept a **dimension** parameter. These parameters are important as
+ * they control how rows in a table are aggregated together.
  * 
- * Every aggregation method aggregates rows in a specific table. The rows that are
- * aggregated together are chosen by **_dimensions_** that you specify.
- * 
- * A **_dimension_** is a table column. In aggregation methods, rows that have the same
- * values for the specified dimensions are aggregated together. Using dimensions you
- * can calculate metrics for an entity (visits, actions, etc.) based on the values of one
- * or more of the entity's properties.
+ * A **_dimension_** is just a table column. Rows that have the same values for these columns are
+ * aggregated together. The result of these aggregations is a set of metrics for every recorded value
+ * of a **dimension**.
  * 
  * _Note: A dimension is essentially the same as a **GROUP BY** field._
  * 
@@ -52,7 +50,7 @@ use Piwik\Tracker\GoalManager;
  *         $where = 'log_visit.visitor_returning = 1',
  * 
  *         // also count visits for each browser language that are not located in the US
- *         $additionalSelects = array('sum(case when log_visit.location_country = 'us' then 1 else 0 end) as nonus'),
+ *         $additionalSelects = array('sum(case when log_visit.location_country <> 'us' then 1 else 0 end) as nonus'),
  * 
  *         // we're only interested in visits, unique visitors & actions, so don't waste time calculating anything else
  *         $metrics = array(Metrics::INDEX_NB_UNIQ_VISITORS, Metrics::INDEX_NB_VISITS, Metrics::INDEX_NB_ACTIONS),
@@ -142,7 +140,8 @@ class LogAggregator
     protected $segment;
 
     /**
-     * Constructor
+     * Constructor.
+     * 
      * @param \Piwik\ArchiveProcessor\Parameters $params
      */
     public function __construct(Parameters $params)
@@ -237,7 +236,8 @@ class LogAggregator
     }
 
     /**
-     * Aggregates visit logs, optionally grouping by some dimension, and returns the aggregated data.
+     * Executes and returns a query aggregating visit logs, optionally grouping by some dimension. Returns
+     * a DB statement that can be used to iterate over the result
      *
      * **Result Set**
      *
@@ -261,25 +261,26 @@ class LogAggregator
      *
      * _Note: The metrics returned by this query can be customized by the `$metrics` parameter._
      *
-     * @param array|string $dimensions SELECT fields (or just one field) that will be grouped by,
+     * @param array|string $dimensions `SELECT` fields (or just one field) that will be grouped by,
      *                                 eg, `'referrer_name'` or `array('referrer_name', 'referrer_keyword')`.
      *                                 The metrics retrieved from the query will be specific to combinations
      *                                 of these fields. So if `array('referrer_name', 'referrer_keyword')`
-     *                                 is supplied, the query will select the visits for each referrer/keyword
+     *                                 is supplied, the query will aggregate visits for each referrer/keyword
      *                                 combination.
-     * @param bool|string $where Additional condition for the WHERE clause. Can be used to filter
+     * @param bool|string $where Additional condition for the `WHERE` clause. Can be used to filter
      *                           the set of visits that are considered for aggregation.
-     * @param array $additionalSelects Additional SELECT fields that are not included in the group by
+     * @param array $additionalSelects Additional `SELECT` fields that are not included in the group by
      *                                 clause. These can be aggregate expressions, eg, `SUM(somecol)`.
      * @param bool|array $metrics The set of metrics to calculate and return. If false, the query will select
      *                            all of them. The following values can be used:
-     *                              - {@link Piwik\Metrics::INDEX_NB_UNIQ_VISITORS}
-     *                              - {@link Piwik\Metrics::INDEX_NB_VISITS}
-     *                              - {@link Piwik\Metrics::INDEX_NB_ACTIONS}
-     *                              - {@link Piwik\Metrics::INDEX_MAX_ACTIONS}
-     *                              - {@link Piwik\Metrics::INDEX_SUM_VISIT_LENGTH}
-     *                              - {@link Piwik\Metrics::INDEX_BOUNCE_COUNT}
-     *                              - {@link Piwik\Metrics::INDEX_NB_VISITS_CONVERTED}
+     * 
+     *                            - {@link Piwik\Metrics::INDEX_NB_UNIQ_VISITORS}
+     *                            - {@link Piwik\Metrics::INDEX_NB_VISITS}
+     *                            - {@link Piwik\Metrics::INDEX_NB_ACTIONS}
+     *                            - {@link Piwik\Metrics::INDEX_MAX_ACTIONS}
+     *                            - {@link Piwik\Metrics::INDEX_SUM_VISIT_LENGTH}
+     *                            - {@link Piwik\Metrics::INDEX_BOUNCE_COUNT}
+     *                            - {@link Piwik\Metrics::INDEX_NB_VISITS_CONVERTED}
      * @param bool|\Piwik\RankingQuery $rankingQuery
      *                                   A pre-configured ranking query instance that will be used to limit the result.
      *                                   If set, the return value is the array returned by {@link Piwik\RankingQuery::execute()}.
@@ -462,34 +463,31 @@ class LogAggregator
     }
 
     /**
-     * Aggregates ecommerce item data (everything stored in the **log\_conversion\_item** table)
-     * and returns a DB statement that can be used to iterate over the aggregated data.
+     * Executes and returns a query aggregating ecommerce item data (everything stored in the
+     * **log\_conversion\_item** table)  and returns a DB statement that can be used to iterate over the result
      *
      * <a name="queryEcommerceItems-result-set"></a>
      * **Result Set**
      *
-     * The following columns are in each row of the result set:
+     * Each row of the result set represents an aggregated group of ecommerce items. The following
+     * columns are in each row of the result set:
      *
-     * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ITEM_REVENUE}**: The total revenue for the group of items
-     *                                                           this row aggregated.
-     * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ITEM_QUANTITY}**: The total number of items of the group
-     *                                                             this row aggregated.
-     * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ITEM_PRICE}**: The total price for the group of items this
-     *                                                          row aggregated.
+     * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ITEM_REVENUE}**: The total revenue for the group of items.
+     * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ITEM_QUANTITY}**: The total number of items in this group.
+     * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ITEM_PRICE}**: The total price for the group of items.
      * - **{@link Piwik\Metrics::INDEX_ECOMMERCE_ORDERS}**: The total number of orders this group of items
      *                                                      belongs to. This will be <= to the total number
      *                                                      of items in this group.
-     * - **{@link Piwik\Metrics::INDEX_NB_VISITS}**: The total number of visits during which each item in
-     *                                               this group of items was logged.
+     * - **{@link Piwik\Metrics::INDEX_NB_VISITS}**: The total number of visits that caused these items to be logged.
      * - **ecommerceType**: Either {@link Piwik\Tracker\GoalManager::IDGOAL_CART} if the items in this group were
      *                      abandoned by a visitor, or {@link Piwik\Tracker\GoalManager::IDGOAL_ORDER} if they
      *                      were ordered by a visitor.
      *
      * **Limitations**
      *
-     * Segmentation is not yet supported in this aggregation method.
+     * Segmentation is not yet supported for this aggregation method.
      *
-     * @param string $dimension One or more **log_conversion_item** column to group aggregated data by.
+     * @param string $dimension One or more **log\_conversion\_item** columns to group aggregated data by.
      *                          Eg, `'idaction_sku'` or `'idaction_sku, idaction_category'`.
      * @return Zend_Db_Statement A statement object that can be used to iterate through the query's
      *                           result set. See [above](#queryEcommerceItems-result-set) to learn more
@@ -523,8 +521,8 @@ class LogAggregator
     }
 
     /**
-     * Aggregates action data (everything in the log_action table) and returns a DB
-     * statement that can be used to iterate over the aggregated data.
+     * Executes and returns a query aggregating action data (everything in the log_action table) and returns
+     * a DB statement that can be used to iterate over the result
      *
      * <a name="queryActionsByDimension-result-set"></a>
      * **Result Set**
@@ -539,7 +537,7 @@ class LogAggregator
      *
      * Additional data can be selected through the `$additionalSelects` parameter.
      *
-     * _Note: The metrics returned by this query can be customized by the `$metrics` parameter._
+     * _Note: The metrics calculated by this query can be customized by the `$metrics` parameter._
      *
      * @param array|string $dimensions One or more SELECT fields that will be used to group the log_action
      *                                 rows by. This parameter determines which log_action rows will be
@@ -548,8 +546,9 @@ class LogAggregator
      *                           the set of visits that are considered for aggregation.
      * @param array $additionalSelects Additional SELECT fields that are not included in the group by
      *                                 clause. These can be aggregate expressions, eg, `SUM(somecol)`.
-     * @param bool|array $metrics The set of metrics to calculate and return. If false, the query will select
+     * @param bool|array $metrics The set of metrics to calculate and return. If `false`, the query will select
      *                            all of them. The following values can be used:
+     * 
      *                              - {@link Piwik\Metrics::INDEX_NB_UNIQ_VISITORS}
      *                              - {@link Piwik\Metrics::INDEX_NB_VISITS}
      *                              - {@link Piwik\Metrics::INDEX_NB_ACTIONS}
@@ -559,8 +558,10 @@ class LogAggregator
      * @param bool|string $joinLogActionOnColumn One or more columns from the **log_link_visit_action** table that
      *                                           log_action should be joined on. The table alias used for each join
      *                                           is `"log_action$i"` where `$i` is the index of the column in this
-     *                                           array. If a string is used for this parameter, the table alias is not
-     *                                           suffixed.
+     *                                           array.
+     * 
+     *                                           If a string is used for this parameter, the table alias is not
+     *                                           suffixed (since there is only one column).
      * @return mixed A Zend_Db_Statement if `$rankingQuery` isn't supplied, otherwise the result of
      *               {@link Piwik\RankingQuery::execute()}. Read [this](#queryEcommerceItems-result-set)
      *               to see what aggregate data is calculated by the query.
@@ -627,8 +628,8 @@ class LogAggregator
     }
 
     /**
-     * Aggregates conversion data (everything in the **log_conversion** table) and returns
-     * a DB statement that can be used to iterate over the aggregated data.
+     * Executes a query aggregating conversion data (everything in the **log_conversion** table) and returns
+     * a DB statement that can be used to iterate over the result.
      *
      * <a name="queryConversionsByDimension-result-set"></a>
      * **Result Set**
@@ -645,30 +646,37 @@ class LogAggregator
      * - **{@link Piwik\Metrics::INDEX_GOAL_ECOMMERCE_REVENUE_SUBTOTAL}**: The total cost of all ecommerce items sold
      *                                                                     within these conversions. This value does not
      *                                                                     include tax, shipping or any applied discount.
-     *                                                                     _This metric will only be applicable to the special
+     * 
+     *                                                                     _This metric is only applicable to the special
      *                                                                     **ecommerce** goal (where `idGoal == 'ecommerceOrder'`)._
      * - **{@link Piwik\Metrics::INDEX_GOAL_ECOMMERCE_REVENUE_TAX}**: The total tax applied to every transaction in these
-     *                                                                conversions. This metric is only applicable to the special
-     *                                                                **ecommerce** goal (where `idGoal == 'ecommerceOrder'`).
+     *                                                                conversions.
+     * 
+     *                                                                _This metric is only applicable to the special
+     *                                                                **ecommerce** goal (where `idGoal == 'ecommerceOrder'`)._
      * - **{@link Piwik\Metrics::INDEX_GOAL_ECOMMERCE_REVENUE_SHIPPING}**: The total shipping cost for every transaction
-     *                                                                     in these conversions. _This metric is only applicable
-     *                                                                     to the special **ecommerce** goal (where
-     *                                                                     `idGoal == 'ecommerceOrder'`)._
+     *                                                                     in these conversions.
+     * 
+     *                                                                     _This metric is only applicable to the special
+     *                                                                     **ecommerce** goal (where `idGoal == 'ecommerceOrder'`)._
      * - **{@link Piwik\Metrics::INDEX_GOAL_ECOMMERCE_REVENUE_DISCOUNT}**: The total discount applied to every transaction
-     *                                                                     in these conversions. _This metric is only applicable
-     *                                                                     to the special **ecommerce** goal (where
-     *                                                                     `idGoal == 'ecommerceOrder'`)._
+     *                                                                     in these conversions.
+     * 
+     *                                                                     _This metric is only applicable to the special
+     *                                                                     **ecommerce** goal (where `idGoal == 'ecommerceOrder'`)._
      * - **{@link Piwik\Metrics::INDEX_GOAL_ECOMMERCE_ITEMS}**: The total number of ecommerce items sold in each transaction
-     *                                                          in these conversions. _This metric is only applicable to the
-     *                                                          special **ecommerce** goal (where `idGoal =='ecommerceOrder'`).
+     *                                                          in these conversions.
+     * 
+     *                                                          _This metric is only applicable to the special
+     *                                                          **ecommerce** goal (where `idGoal == 'ecommerceOrder'`)._
      * 
      * Additional data can be selected through the `$additionalSelects` parameter.
      * 
      * _Note: This method will only query the **log_conversion** table. Other tables cannot be joined
      * using this method._
      *
-     * @param array|string $dimensions One or more SELECT fields that will be used to group the log_conversion
-     *                                 rows by. This parameter determines which log_conversion rows will be
+     * @param array|string $dimensions One or more **SELECT** fields that will be used to group the log_conversion
+     *                                 rows by. This parameter determines which **log_conversion** rows will be
      *                                 aggregated together.
      * @param bool|string $where An optional SQL expression used in the SQL's **WHERE** clause.
      * @param array $additionalSelects Additional SELECT fields that are not included in the group by
@@ -692,11 +700,8 @@ class LogAggregator
     }
 
     /**
-     * Creates and returns an array of SQL SELECT expressions that will count the number
-     * of rows for which a specific column falls within specific ranges.
-     *
-     * The SELECT expressions will count the number of column values that are
-     * within each range.
+     * Creates and returns an array of SQL `SELECT` expressions that will each count how
+     * many rows have a column whose value is within a certain range.
      *
      * **Note:** The result of this function is meant for use in the `$additionalSelects` parameter
      * in one of the query... methods (for example {@link queryVisitsByDimension()}).
@@ -722,23 +727,25 @@ class LogAggregator
      *         LogAggregator::getSelectsFromRangedColumn('visitor_count_visits', $visitCountVisitsRanges, 'log_visit', 'vcv')
      *     );
      * 
-     *     // perform query
+     *     // perform the query
      *     $logAggregator = // get the LogAggregator somehow
      *     $query = $logAggregator->queryVisitsByDimension($dimensions = array(), $where = false, $selects);
      *     $tableSummary = $query->fetch();
      *     
      *     $numberOfVisitsWithOneAction = $tableSummary['vta0'];
+     *     $numberOfVisitsBetweenTwoAnd10 = $tableSummary['vta1'];
+     * 
+     *     $numberOfVisitsWithVisitCountOfOne = $tableSummary['vcv0'];
      * 
      * @param string $column The name of a column in `$table` that will be summarized.
-     * @param array $ranges An array of arrays describing the ranges over which the data in the table
+     * @param array $ranges The array of ranges over which the data in the table
      *                      will be summarized. For example,
      *                      ```
      *                      array(
      *                          array(1, 1),
      *                          array(2, 2),
-     *                          array(3, 5),
-     *                          array(6, 10),
-     *                          array(10) // everything over 10
+     *                          array(3, 8),
+     *                          array(8) // everything over 8
      *                      )
      *                      ```
      * @param string $table The unprefixed name of the table whose rows will be summarized.
diff --git a/core/DataTable.php b/core/DataTable.php
index ef1d325504a154757b3ddc2a05d0c1072f46753e..f232af65e1b55beb1908c35ccbde44d1c8859111 100644
--- a/core/DataTable.php
+++ b/core/DataTable.php
@@ -45,7 +45,7 @@ require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
  * regarding all the data, such as the site or period that the data is for. _Row metadata_
  * is information regarding that row, such as a browser logo or website URL.
  * 
- * Finally, DataTables all contain a special _summary_ row. This row, if it exists, is
+ * Finally, all DataTables contain a special _summary_ row. This row, if it exists, is
  * always at the end of the DataTable.
  * 
  * ### Populating DataTables
@@ -68,9 +68,9 @@ require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
  * There are two ways to manipulate a DataTable. You can either:
  * 
  * 1. manually iterate through each row and manipulate the data,
- * 2. or you can use predefined Filters.
+ * 2. or you can use predefined filters.
  * 
- * A Filter is a class that has a 'filter' method which will manipulate a DataTable in
+ * A filter is a class that has a 'filter' method which will manipulate a DataTable in
  * some way. There are several predefined Filters that allow you to do common things,
  * such as,
  * 
@@ -80,12 +80,15 @@ require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
  * - sort an entire DataTable,
  * - and more.
  * 
- * Using these Filters instead of writing your own code will increase code clarity and
- * reduce code redundancy. Additionally, Filters have the advantage that they can be
- * applied to DataTable\Map instances. So you can visit every DataTable in a DataTable\Map
+ * Using these filters instead of writing your own code will increase code clarity and
+ * reduce code redundancy. Additionally, filters have the advantage that they can be
+ * applied to DataTable\Map instances. So you can visit every DataTable in a {@link DataTable\Map}
  * without having to write a recursive visiting function.
  * 
- * Note: Anonymous functions can be used as DataTable Filters.
+ * All predefined filters exist in the **Piwik\DataTable\Filter** namespace.
+ * 
+ * _Note: For convenience, [anonymous functions](http://www.php.net/manual/en/functions.anonymous.php)
+ * can be used as DataTable filters._
  * 
  * ### Applying Filters
  * 
@@ -97,9 +100,7 @@ require_once PIWIK_INCLUDE_PATH . '/core/Common.php';
  * 
  * ### Learn more
  * 
- * - **{@link ArchiveProcessor}** &mdash; to learn how DataTables are persisted.
- * - **{@link DataTable\Renderer}** &mdash; to learn how DataTable data is exported to XML, JSON, etc.
- * - **{@link DataTable\Filter}** &mdash; to see all core Filters.
+ * - See **{@link ArchiveProcessor}** to learn how DataTables are persisted.
  * 
  * ### Examples
  * 
@@ -340,9 +341,9 @@ class DataTable implements DataTableInterface
     /**
      * Sorts the DataTable rows using the supplied callback function.
      *
-     * @param string $functionCallback A comparison callback compatible with `usort`.
+     * @param string $functionCallback A comparison callback compatible with {@link usort}.
      * @param string $columnSortedBy The column name `$functionCallback` sorts by. This is stored
-     *                               so we can determine how the DataTable is sorted in the future.
+     *                               so we can determine how the DataTable was sorted in the future.
      */
     public function sort($functionCallback, $columnSortedBy)
     {
@@ -392,15 +393,15 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Applies filter to this datatable.
+     * Applies a filter to this datatable.
      * 
      * If {@link enableRecursiveFilters()} was called, the filter will be applied
      * to all subtables as well.
      *
-     * @param string|Closure $className Class name, eg. "Sort" or "Sort". If no namespace is supplied,
-     *                                  `Piwik\DataTable\Filter` is assumed. This parameter can also be
-     *                                  a closure that takes a DataTable as its first parameter.
-     * @param array $parameters Array of parameters pass to the filter in addition to the table.
+     * @param string|Closure $className Class name, eg. `"Sort"` or "Piwik\DataTable\Filters\Sort"`. If no
+     *                                  namespace is supplied, `Piwik\DataTable\Filter` is assumed. This parameter
+     *                                  can also be a closure that takes a DataTable as its first parameter.
+     * @param array $parameters Array of extra parameters to pass to the filter.
      */
     public function filter($className, $parameters = array())
     {
@@ -430,11 +431,11 @@ class DataTable implements DataTableInterface
      * Adds a filter and a list of parameters to the list of queued filters. These filters will be
      * executed when {@link applyQueuedFilters()} is called.
      * 
-     * Filters that prettify the output or don't need the full set of rows should be queued. This
+     * Filters that prettify the column values or don't need the full set of rows should be queued. This
      * way they will be run after the table is truncated which will result in better performance.
      *
-     * @param string|Closure $className The class name of the filter, eg. Limit
-     * @param array $parameters The parameters to give to the filter, eg. array( $offset, $limit) for the filter Limit
+     * @param string|Closure $className The class name of the filter, eg. `'Limit'`.
+     * @param array $parameters The parameters to give to the filter, eg. `array($offset, $limit)` for the Limit filter.
      */
     public function queueFilter($className, $parameters = array())
     {
@@ -460,7 +461,7 @@ class DataTable implements DataTableInterface
      * Sums a DataTable to this one.
      * 
      * This method will sum rows that have the same label. If a row is found in `$tableToSum` whose
-     * label is not found in `$this`, the row will be added to `$this` DataTable.
+     * label is not found in `$this`, the row will be added to `$this`.
      * 
      * If the subtables for this table are loaded, they will be summed as well.
      * 
@@ -493,7 +494,7 @@ class DataTable implements DataTableInterface
      * label => row ID mappings.
      * 
      * @param string $label `'label'` column value to look for.
-     * @return Row|false The row if found, false if otherwise.
+     * @return Row|false The row if found, `false` if otherwise.
      */
     public function getRowFromLabel($label)
     {
@@ -650,7 +651,7 @@ class DataTable implements DataTableInterface
     /**
      * Sets the summary row.
      * 
-     * Note: A dataTable can have only one summary row.
+     * _Note: A DataTable can have only one summary row._
      *
      * @param Row $row
      * @return Row Returns `$row`.
@@ -685,10 +686,10 @@ class DataTable implements DataTableInterface
     /**
      * Adds a new row from an array.
      * 
-     * You can add Row metadata with this method.
+     * You can add row metadata with this method.
      *
-     * @param array $row eg. array(Row::COLUMNS => array('visits' => 13, 'test' => 'toto'),
-     *                             Row::METADATA => array('mymetadata' => 'myvalue'))
+     * @param array $row eg. `array(Row::COLUMNS => array('visits' => 13, 'test' => 'toto'),
+     *                              Row::METADATA => array('mymetadata' => 'myvalue'))`
      */
     public function addRowFromArray($row)
     {
@@ -700,7 +701,7 @@ class DataTable implements DataTableInterface
      * 
      * Row metadata cannot be added with this method.
      *
-     * @param array $row eg. array('name' => 'google analytics', 'license' => 'commercial')
+     * @param array $row eg. `array('name' => 'google analytics', 'license' => 'commercial')`
      */
     public function addRowFromSimpleArray($row)
     {
@@ -757,11 +758,11 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Returns the list of columns the rows in this datatable contain. This will return the
-     * columns of the first row with data and assume they occur in every other row as well.
+     * Returns the names of every column this DataTable contains. This method will return the
+     * columns of the first row with data and will assume they occur in every other row as well.
      * 
-     * Note: If column names still use their in-database INDEX values (@see Metrics), they
-     *       will be converted to their string name in the array result.
+     *_ Note: If column names still use their in-database INDEX values (@see Metrics), they
+     *        will be converted to their string name in the array result._
      * 
      * @return array Array of string column names.
      */
@@ -851,8 +852,8 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Returns the number of rows in this DataTable summed with the row count of each subtable
-     * in the DataTable hierarchy. This includes the subtables of subtables and further descendants.
+     * Returns the number of rows in the entire DataTable hierarchy. This is the number of rows in this DataTable
+     * summed with the row count of each descendant subtable.
      *
      * @return int
      */
@@ -998,7 +999,7 @@ class DataTable implements DataTableInterface
     /**
      * Returns a string representation of this DataTable for convenient viewing.
      * 
-     * Note: This uses the Html DataTable renderer.
+     * _Note: This uses the **html** DataTable renderer._
      *
      * @return string
      */
@@ -1062,6 +1063,7 @@ class DataTable implements DataTableInterface
      * @param int $maximumRowsInSubDataTable If not null, defines the maximum number of rows allowed in serialized subtables.
      * @param string $columnToSortByBeforeTruncation The column to sort by before truncating, eg, `Metrics::INDEX_NB_VISITS`.
      * @return array The array of serialized DataTables:
+     * 
      *                   array(
      *                       // this DataTable (the root)
      *                       0 => 'eghuighahgaueytae78yaet7yaetae',
@@ -1130,9 +1132,10 @@ class DataTable implements DataTableInterface
      *
      * See {@link serialize()}.
      * 
-     * @param string $stringSerialized A serialized DataTable string in the format of a string in the
-     *                                 array returned by {@link serialize()}. This function will
-     *                                 successfully load DataTables serialized by Piwik 1.X.
+     * _Note: This function will successfully load DataTables serialized by Piwik 1.X._
+     * 
+     * @param string $stringSerialized A string with the format of a string in the array returned by
+     *                                 {@link serialize()}.
      * @throws Exception if `$stringSerialized` is invalid.
      */
     public function addRowsFromSerializedArray($stringSerialized)
@@ -1147,11 +1150,12 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Adds many rows from an array.
+     * Adds multiple rows from an array.
      * 
-     * You can add Row metadata with this method.
+     * You can add row metadata with this method.
      *
      * @param array $array Array with the following structure
+     * 
      *                         array(
      *                             // row1
      *                             array(
@@ -1177,16 +1181,17 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Adds many rows from an array containing arrays of column values.
+     * Adds multiple rows from an array containing arrays of column values.
      * 
      * Row metadata cannot be added with this method.
      *
-     * @param array $array Array with the simple structure:
+     * @param array $array Array with the following structure:
+     * 
      *                       array(
      *                             array( col1_name => valueA, col2_name => valueC, ...),
      *                             array( col1_name => valueB, col2_name => valueD, ...),
      *                       )
-     * @throws Exception
+     * @throws Exception if `$array` is in an incorrect format.
      */
     public function addRowsFromSimpleArray($array)
     {
@@ -1257,30 +1262,36 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Rewrites the input $array
-     * array (
-     *     LABEL => array(col1 => X, col2 => Y),
-     *     LABEL2 => array(col1 => X, col2 => Y),
-     * )
-     * to a DataTable, ie. with the internal structure
-     * array (
-     *     array( Row::COLUMNS => array('label' => LABEL, col1 => X, col2 => Y)),
-     *     array( Row::COLUMNS => array('label' => LABEL2, col1 => X, col2 => Y)),
-     * )
+     * Rewrites the input `$array`
+     * 
+     *     array (
+     *         LABEL => array(col1 => X, col2 => Y),
+     *         LABEL2 => array(col1 => X, col2 => Y),
+     *     )
+     * 
+     * to a DataTable with rows that look like:
+     * 
+     *     array (
+     *         array( Row::COLUMNS => array('label' => LABEL, col1 => X, col2 => Y)),
+     *         array( Row::COLUMNS => array('label' => LABEL2, col1 => X, col2 => Y)),
+     *     )
      *
-     * It also works with array having only one value per row, eg.
-     * array (
-     *     LABEL => X,
-     *     LABEL2 => Y,
-     * )
-     * would be converted to:
-     * array (
-     *     array( Row::COLUMNS => array('label' => LABEL, 'value' => X)),
-     *     array( Row::COLUMNS => array('label' => LABEL2, 'value' => Y)),
-     * )
+     * Will also convert arrays like: 
+     * 
+     *     array (
+     *         LABEL => X,
+     *         LABEL2 => Y,
+     *     )
+     * 
+     * to:
+     * 
+     *     array (
+     *         array( Row::COLUMNS => array('label' => LABEL, 'value' => X)),
+     *         array( Row::COLUMNS => array('label' => LABEL2, 'value' => Y)),
+     *     )
      *
-     * @param array $array Indexed array, two formats are supported
-     * @param array|null $subtablePerLabel An indexed array of up to one DataTable to associate as a sub table
+     * @param array $array Indexed array, two formats supported, see above.
+     * @param array|null $subtablePerLabel An array mapping label values with DataTable instances to associate as a subtable.
      * @return \Piwik\DataTable
      */
     public static function makeFromIndexedArray($array, $subtablePerLabel = null)
@@ -1305,7 +1316,7 @@ class DataTable implements DataTableInterface
 
     /**
      * Sets the maximum depth level to at least a certain value. If the current value is
-     * greater than the supplied level, the maximum nesting level is not changed.
+     * greater than `$atLeastLevel`, the maximum nesting level is not changed.
      * 
      * The maximum depth level determines the maximum number of subtable levels in the
      * DataTable tree. For example, if it is set to `2`, this DataTable is allowed to
@@ -1325,7 +1336,7 @@ class DataTable implements DataTableInterface
      * Returns metadata by name.
      *
      * @param string $name The metadata name.
-     * @return mixed|false The metadata value or false if it cannot be found.
+     * @return mixed|false The metadata value or `false` if it cannot be found.
      */
     public function getMetadata($name)
     {
@@ -1369,7 +1380,7 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Sets metadata erasing existing values.
+     * Sets metadata, erasing existing values.
      * 
      * @param array $values Array mapping metadata names with metadata values.
      */
@@ -1392,12 +1403,12 @@ class DataTable implements DataTableInterface
 
     /**
      * Traverses a DataTable tree using an array of labels and returns the row
-     * it finds or false if it cannot find one. The number of path segments that
+     * it finds or `false` if it cannot find one. The number of path segments that
      * were successfully walked is also returned.
      * 
-     * If $missingRowColumns is supplied, the specified path is created. When
-     * a subtable is encountered w/o the queried label, a new row is created
-     * with the label, and a subtable is added to the row.
+     * If `$missingRowColumns` is supplied, the specified path is created. When
+     * a subtable is encountered w/o the required label, a new row is created
+     * with the label, and a new subtable is added to the row.
      *
      * Read [http://en.wikipedia.org/wiki/Tree_(data_structure)#Traversal_methods](http://en.wikipedia.org/wiki/Tree_(data_structure)#Traversal_methods)
      * for more information about tree walking.
@@ -1410,9 +1421,9 @@ class DataTable implements DataTableInterface
      *                                      created for path labels that cannot be found.
      * @param int $maxSubtableRows The maximum number of allowed rows in new subtables. New
      *                             subtables are only created if `$missingRowColumns` is provided.
-     * @return array First element is the found row or false. Second element is
+     * @return array First element is the found row or `false`. Second element is
      *               the number of path segments walked. If a row is found, this
-     *               will be == to count($path). Otherwise, it will be the index
+     *               will be == to `count($path)`. Otherwise, it will be the index
      *               of the path segment that we could not find.
      */
     public function walkPath($path, $missingRowColumns = false, $maxSubtableRows = 0)
@@ -1468,15 +1479,15 @@ class DataTable implements DataTableInterface
     }
 
     /**
-     * Returns a new DataTable in which the rows of this table are replaced with the aggregatated rows of all its subtable's.
+     * Returns a new DataTable in which the rows of this table are replaced with the aggregatated rows of all its subtables.
      *
      * @param string|bool $labelColumn If supplied the label of the parent row will be added to
      *                                 a new column in each subtable row.
      * 
-     *                                 If set to, 'label' each subtable row's label will be prepended
+     *                                 If set to, `'label'` each subtable row's label will be prepended
      *                                 w/ the parent row's label. So `'child_label'` becomes
      *                                 `'parent_label - child_label'`.
-     * @param bool $useMetadataColumn If true and if $labelColumn is supplied, the parent row's
+     * @param bool $useMetadataColumn If true and if `$labelColumn` is supplied, the parent row's
      *                                label will be added as metadata and not a new column.
      * @return \Piwik\DataTable
      */
diff --git a/core/Db.php b/core/Db.php
index a1ae66916dd2681243d8bcc6c847f436ece8bde1..bfd88878d6ba32c39922dc8c92f8042a9cbe1de9 100644
--- a/core/Db.php
+++ b/core/Db.php
@@ -15,20 +15,19 @@ use Piwik\Db\Adapter;
 use Piwik\Tracker;
 
 /**
- * Helper class that contains SQL related helper functions.
+ * Contains SQL related helper functions for Piwik's MySQL database.
  * 
- * Plugins should use this class to execute SQL against the database.
+ * Plugins should always use this class to execute SQL against the database.
  * 
  * ### Examples
  * 
- * **Basic Usage**
- * 
  *     $rows = Db::fetchAll("SELECT col1, col2 FROM mytable WHERE thing = ?", array('thingvalue'));
  *     foreach ($rows as $row) {
  *         doSomething($row['col1'], $row['col2']);
  *     }
  * 
  *     $value = Db::fetchOne("SELECT MAX(col1) FROM mytable");
+ *     doSomethingElse($value);
  * 
  *     Db::query("DELETE FROM mytable WHERE id < ?", array(23));
  * 
@@ -58,9 +57,9 @@ class Db
     }
 
     /**
-     * Create the database object and connects to the database.
+     * Connects to the database.
      * 
-     * Shouldn't be called directly, use {@link get()}.
+     * Shouldn't be called directly, use {@link get()} instead.
      * 
      * @param array|null $dbInfos Connection parameters in an array. Defaults to the `[database]`
      *                            INI config section.
@@ -101,9 +100,10 @@ class Db
     }
 
     /**
-     * Executes an unprepared SQL query. Recommended for DDL statements like CREATE,
-     * DROP and ALTER. The return value is DBMS-specific. For MySQLI, it returns the
-     * number of rows affected. For PDO, it returns the `Zend_Db_Statement` object.
+     * Executes an unprepared SQL query. Recommended for DDL statements like `CREATE`,
+     * `DROP` and `ALTER`. The return value is DBMS-specific. For MySQLI, it returns the
+     * number of rows affected. For PDO, it returns a
+     * [Zend_Db_Statement](http://framework.zend.com/manual/1.12/en/zend.db.statement.html) object.
      *
      * @param string $sql The SQL query.
      * @throws \Exception If there is an error in the SQL.
@@ -128,10 +128,11 @@ class Db
     }
 
     /**
-     * Executes an SQL query and returns the Zend_Db_Statement object.
-     * If you want to fetch data from the DB you should use one of the fetch... functions.
-     *
-     * See also [http://framework.zend.com/manual/en/zend.db.statement.html](http://framework.zend.com/manual/en/zend.db.statement.html).
+     * Executes an SQL query and returns the [Zend_Db_Statement](http://framework.zend.com/manual/1.12/en/zend.db.statement.html)
+     * for the query.
+     * 
+     * This method is meant for non-query SQL statements like `INSERT` and `UPDATE. If you want to fetch
+     * data from the DB you should use one of the fetch... functions.
      *
      * @param string $sql The SQL query.
      * @param array $parameters Parameters to bind in the query, eg, `array(param1 => value1, param2 => value2)`.
@@ -149,12 +150,13 @@ class Db
     }
 
     /**
-     * Executes the SQL query and fetches all the rows from the result set.
+     * Executes an SQL `SELECT` statement and returns all fetched rows from the result set.
      *
      * @param string $sql The SQL query.
      * @param array $parameters Parameters to bind in the query, eg, `array(param1 => value1, param2 => value2)`.
      * @throws \Exception If there is a problem with the SQL or bind parameters.
-     * @return array (one row in the array per row fetched in the DB)
+     * @return array The fetched rows, each element is an associative array mapping column names
+     *               with column values.
      */
     static public function fetchAll($sql, $parameters = array())
     {
@@ -167,12 +169,13 @@ class Db
     }
 
     /**
-     * Executes an SQL query and fetches the first row of the result.
+     * Executes an SQL `SELECT` statement and returns the first row of the result set.
      *
      * @param string $sql The SQL query.
      * @param array $parameters Parameters to bind in the query, eg, `array(param1 => value1, param2 => value2)`.
      * @throws \Exception If there is a problem with the SQL or bind parameters.
-     * @return array
+     * @return array The fetched row, each element is an associative array mapping column names
+     *               with column values.
      */
     static public function fetchRow($sql, $parameters = array())
     {
@@ -185,7 +188,8 @@ class Db
     }
 
     /**
-     * Executes an SQL query and fetches the first column of the first row of result set.
+     * Executes an SQL `SELECT` statement and returns the first column value of the first
+     * row in the result set.
      *
      * @param string $sql The SQL query.
      * @param array $parameters Parameters to bind in the query, eg, `array(param1 => value1, param2 => value2)`.
@@ -203,7 +207,7 @@ class Db
     }
 
     /**
-     * Executes an SQL query and returns the entire result set indexed by the first
+     * Executes an SQL `SELECT` statement and returns the entire result set indexed by the first
      * selected field.
      *
      * @param string $sql The SQL query.
@@ -234,14 +238,15 @@ class Db
      * 
      * **Example**
      * 
+     *     // delete all visit rows whose ID is less than a certain value, 100000 rows at a time
      *     $idVisit = // ...
      *     Db::deleteAllRows(Common::prefixTable('log_visit'), "WHERE idvisit <= ?", "idvisit ASC", 100000, array($idVisit));
      * 
      * @param string $table The name of the table to delete from. Must be prefixed (see {@link Piwik\Common::prefixTable()}).
      * @param string $where The where clause of the query. Must include the WHERE keyword.
      * @param $orderBy The column to order by and the order by direction, eg, `idvisit ASC`.
-     * @param int $maxRowsPerQuery The maximum number of rows to delete per DELETE query.
-     * @param array $parameters Parameters to bind in the query.
+     * @param int $maxRowsPerQuery The maximum number of rows to delete per `DELETE` query.
+     * @param array $parameters Parameters to bind for each query.
      * @return int The total number of rows deleted.
      */
     static public function deleteAllRows($table, $where, $orderBy, $maxRowsPerQuery = 100000, $parameters = array())
@@ -264,13 +269,13 @@ class Db
     }
 
     /**
-     * Runs an OPTIMIZE TABLE query on the supplied table or tables. The table names must be prefixed
-     * (see {@link Piwik\Common::prefixTable()}).
+     * Runs an `OPTIMIZE TABLE` query on the supplied table or tables.
      * 
-     * Tables will only be optimized if the `[General] enable_sql_optimize_queries` config option is
+     * Tables will only be optimized if the `[General] enable_sql_optimize_queries` INI config option is
      * set to **1**.
      *
      * @param string|array $tables The name of the table to optimize or an array of tables to optimize.
+     *                             Table names must be prefixed (see {@link Piwik\Common::prefixTable()}).
      * @return \Zend_Db_Statement
      */
     static public function optimizeTables($tables)
@@ -306,9 +311,10 @@ class Db
     }
 
     /**
-     * Drops the supplied table or tables. The table names must be prefixed (see {@link Piwik\Common::prefixTable()}).
+     * Drops the supplied table or tables.
      *
      * @param string|array $tables The name of the table to drop or an array of table names to drop.
+     *                             Table names must be prefixed (see {@link Piwik\Common::prefixTable()}).
      * @return \Zend_Db_Statement
      */
     static public function dropTables($tables)
@@ -321,13 +327,15 @@ class Db
     }
 
     /**
-     * Locks the supplied table or tables. The table names must be prefixed (see {@link Piwik\Common::prefixTable()}).
+     * Locks the supplied table or tables.
      * 
-     * **NOTE:** Piwik does not require the LOCK TABLES privilege to be available. Piwik
-     * should still work in case it is not granted.
+     * **NOTE:** Piwik does not require the `LOCK TABLES` privilege to be available. Piwik
+     * should still work if it has not been granted.
      * 
-     * @param string|array $tablesToRead The table or tables to obtain 'read' locks on.
-     * @param string|array $tablesToWrite The table or tables to obtain 'write' locks on.
+     * @param string|array $tablesToRead The table or tables to obtain 'read' locks on. Table names must
+     *                                   be prefixed (see {@link Piwik\Common::prefixTable()}).
+     * @param string|array $tablesToWrite The table or tables to obtain 'write' locks on. Table names must
+     *                                    be prefixed (see {@link Piwik\Common::prefixTable()}).
      * @return \Zend_Db_Statement
      */
     static public function lockTables($tablesToRead, $tablesToWrite = array())
@@ -353,8 +361,8 @@ class Db
     /**
      * Releases all table locks.
      *
-     * **NOTE:** Piwik does not require the LOCK TABLES privilege to be available. Piwik
-     * should still work in case it is not granted.
+     * **NOTE:** Piwik does not require the `LOCK TABLES` privilege to be available. Piwik
+     * should still work if it has not been granted.
      * 
      * @return \Zend_Db_Statement
      */
@@ -364,16 +372,16 @@ class Db
     }
 
     /**
-     * Performs a SELECT on a table one chunk at a time and returns the first
+     * Performs a `SELECT` statement on a table one chunk at a time and returns the first
      * successfully fetched value.
      * 
-     * In other words, if running a SELECT on one chunk of the table doesn't
-     * return a value, we move on to the next chunk and we keep moving until
-     * the SELECT returns a value.
+     * This function will execute a query on one set of rows in a table. If nothing
+     * is fetched, it will execute the query on the next set of rows and so on until
+     * the query returns a value.
      *
-     * This function will break up a SELECT into several smaller SELECTs and
-     * should be used when performing a SELECT that can take a long time to finish.
-     * Using several smaller SELECTs will ensure that the table will not be locked
+     * This function will break up a `SELECT into several smaller `SELECT`s and
+     * should be used when performing a `SELECT` that can take a long time to finish.
+     * Using several smaller `SELECT`s will ensure that the table will not be locked
      * for too long.
      * 
      * **Example**
@@ -391,13 +399,13 @@ class Db
      *     // since visits
      *     return Db::segmentedFetchFirst($sql, $maxIdVisit, 0, -self::$selectSegmentSize);
      *
-     * @param string $sql The SQL to perform. The last two conditions of the WHERE
-     *                    expression must be as follows: 'id >= ? AND id < ?' where
-     *                    'id' is the int id of the table.
+     * @param string $sql The SQL to perform. The last two conditions of the `WHERE`
+     *                    expression must be as follows: `'id >= ? AND id < ?'` where
+     *                    **id** is the int id of the table.
      * @param int $first The minimum ID to loop from.
      * @param int $last The maximum ID to loop to.
-     * @param int $step The maximum number of rows to scan in each smaller SELECT.
-     * @param array $params Parameters to bind in the query, `array(param1 => value1, param2 => value2)`
+     * @param int $step The maximum number of rows to scan in one query.
+     * @param array $params Parameters to bind in the query, eg, `array(param1 => value1, param2 => value2)`
      *
      * @return string
      */
@@ -417,20 +425,23 @@ class Db
     }
 
     /**
-     * Performs a SELECT on a table one chunk at a time and returns an array
+     * Performs a `SELECT` on a table one chunk at a time and returns an array
      * of every fetched value.
      * 
-     * This function will break up a SELECT into several smaller SELECTs and
-     * accumulate the result. It should be used when performing a SELECT that can
-     * take a long time to finish. Using several smaller SELECTs will ensure that
+     * This function will break up a `SELECT` query into several smaller queries by
+     * using only a limited number of rows at a time. It will accumulate the results
+     * of each smaller query and return the result.
+     * 
+     * This function should be used when performing a `SELECT` that can
+     * take a long time to finish. Using several smaller queries will ensure that
      * the table will not be locked for too long.
      *
-     * @param string $sql The SQL to perform. The last two conditions of the WHERE
-     *                    expression must be as follows: 'id >= ? AND id < ?' where
-     *                    'id' is the int id of the table.
+     * @param string $sql The SQL to perform. The last two conditions of the `WHERE`
+     *                    expression must be as follows: `'id >= ? AND id < ?'` where
+     *                    **id** is the int id of the table.
      * @param int $first The minimum ID to loop from.
      * @param int $last The maximum ID to loop to.
-     * @param int $step The maximum number of rows to scan in each smaller SELECT.
+     * @param int $step The maximum number of rows to scan in one query.
      * @param array $params Parameters to bind in the query, `array(param1 => value1, param2 => value2)`
      * @return array An array of primitive values.
      */
@@ -453,19 +464,22 @@ class Db
      * Performs a SELECT on a table one chunk at a time and returns an array
      * of every fetched row.
      *
-     * This function will break up a SELECT into several smaller SELECTs and
-     * accumulate the result. It should be used when performing a SELECT that can
-     * take a long time to finish. Using several smaller SELECTs will ensure that
+     * This function will break up a `SELECT` query into several smaller queries by
+     * using only a limited number of rows at a time. It will accumulate the results
+     * of each smaller query and return the result.
+     * 
+     * This function should be used when performing a `SELECT` that can
+     * take a long time to finish. Using several smaller queries will ensure that
      * the table will not be locked for too long.
      * 
-     * @param string $sql The SQL to perform. The last two conditions of the WHERE
-     *                    expression must be as follows: 'id >= ? AND id < ?' where
-     *                    'id' is the int id of the table.
+     * @param string $sql The SQL to perform. The last two conditions of the `WHERE`
+     *                    expression must be as follows: `'id >= ? AND id < ?'` where
+     *                    **id** is the int id of the table.
      * @param int $first The minimum ID to loop from.
      * @param int $last The maximum ID to loop to.
-     * @param int $step The maximum number of rows to scan in each smaller SELECT.
+     * @param int $step The maximum number of rows to scan in one query.
      * @param array $params Parameters to bind in the query, array( param1 => value1, param2 => value2)
-     * @return array An array of rows that includes the result set of every executed
+     * @return array An array of rows that includes the result set of every smaller
      *               query.
      */
     static public function segmentedFetchAll($sql, $first, $last, $step, $params = array())
@@ -486,14 +500,21 @@ class Db
     }
 
     /**
-     * Performs a non-SELECT query on a table one chunk at a time.
+     * Performs a `UPDATE` or `DELETE` statement on a table one chunk at a time.
+     * 
+     * This function will break up a query into several smaller queries by
+     * using only a limited number of rows at a time.
+     * 
+     * This function should be used when executing a non-query statement will
+     * take a long time to finish. Using several smaller queries will ensure that
+     * the table will not be locked for too long.
      * 
-     * @param string $sql The SQL to perform. The last two conditions of the WHERE
-     *                    expression must be as follows: 'id >= ? AND id < ?' where
-     *                    'id' is the int id of the table.
+     * @param string $sql The SQL to perform. The last two conditions of the `WHERE`
+     *                    expression must be as follows: `'id >= ? AND id < ?'` where
+     *                    **id** is the int id of the table.
      * @param int $first The minimum ID to loop from.
      * @param int $last The maximum ID to loop to.
-     * @param int $step The maximum number of rows to scan in each smaller query.
+     * @param int $step The maximum number of rows to scan in one query.
      * @param array $params Parameters to bind in the query, `array(param1 => value1, param2 => value2)`
      */
     static public function segmentedQuery($sql, $first, $last, $step, $params = array())
@@ -513,7 +534,7 @@ class Db
 
     /**
      * Attempts to get a named lock. This function uses a timeout of 1s, but will
-     * retry a set number of time.
+     * retry a set number of times.
      *
      * @param string $lockName The lock name.
      * @param int $maxRetries The max number of times to retry.
diff --git a/core/Filesystem.php b/core/Filesystem.php
index 2eb8ff7a783f9976206d9fa82506d66bf60b4884..aea8f5e1c8ec3af3fe1b3d5246c1b81dda5db860 100644
--- a/core/Filesystem.php
+++ b/core/Filesystem.php
@@ -14,7 +14,7 @@ use Exception;
 use Piwik\Tracker\Cache;
 
 /**
- * Contains helper functions that involve the filesystem.
+ * Contains helper functions that deal with the filesystem.
  * 
  * @package Piwik
  */
@@ -92,11 +92,11 @@ class Filesystem
     /**
      * Attempts to create a new directory. All errors are silenced.
      * 
-     * Note: This function does not create directories recursively.
+     * _Note: This function does **not** create directories recursively._
      *
      * @param string $path The path of the directory to create.
      * @param bool $denyAccess Whether to deny browser access to this new folder by
-     *                         creating a .htaccess file.
+     *                         creating an **.htaccess** file.
      * @api
      */
     public static function mkdir($path, $denyAccess = true)
@@ -170,11 +170,12 @@ class Filesystem
 
     /**
      * Recursively find pathnames that match a pattern.
+     * 
      * See {@link http://php.net/manual/en/function.glob.php glob} for more info.
      *
      * @param string $sDir directory The directory to glob in.
      * @param string $sPattern pattern The pattern to match paths against.
-     * @param int $nFlags `glob()` flags. See {@link http://php.net/manual/en/function.glob.php}.
+     * @param int $nFlags `glob()` . See {@link http://php.net/manual/en/function.glob.php glob()}.
      * @return array The list of paths that match the pattern.
      * @api
      */
@@ -200,7 +201,7 @@ class Filesystem
      * Recursively deletes a directory.
      *
      * @param string $dir Path of the directory to delete.
-     * @param boolean $deleteRootToo Whether to delete `$dir` or just its contents.
+     * @param boolean $deleteRootToo If true, `$dir` is deleted, otherwise just its contents.
      * @param \Closure|false $beforeUnlink An optional closure to execute on a file path before unlinking.
      * @api
      */
@@ -238,7 +239,7 @@ class Filesystem
      * @param bool $excludePhp Whether to avoid copying files if the file is related to PHP
      *                         (includes .php, .tpl, .twig files).
      * @throws Exception If the file cannot be copied.
-     * @return bool
+     * @return true
      * @api
      */
     public static function copy($source, $dest, $excludePhp = false)
diff --git a/core/FrontController.php b/core/FrontController.php
index e9fb8f6093be028b638ee7b9f466bdf065e7cd0d..f45028272abd8a8d1017496da42121abd5256d31 100644
--- a/core/FrontController.php
+++ b/core/FrontController.php
@@ -152,7 +152,7 @@ class FrontController extends Singleton
              * This event can be used to customize the error that occurs when a user is denied access
              * (for example, displaying an error message, redirecting to a page other than login, etc.).
              * 
-             * @param NoAccessException $exception The exception that was caught.
+             * @param \Piwik\NoAccessException $exception The exception that was caught.
              */
             Piwik::postEvent('User.isNotAuthorized', array($exception), $pending = true);
         } catch (Exception $e) {
diff --git a/core/IP.php b/core/IP.php
index 6e3140fdae19122f86e79220f49298c9a241f5b8..b13c6264b3997e1c39ab265c93955cb3269a5de9 100644
--- a/core/IP.php
+++ b/core/IP.php
@@ -16,11 +16,11 @@ namespace Piwik;
  *
  * As of Piwik 1.3, IP addresses are stored in the DB has VARBINARY(16),
  * and passed around in network address format which has the advantage of
- * being in big-endian byte order, allowing for binary-safe string
+ * being in big-endian byte order. This allows for binary-safe string
  * comparison of addresses (of the same length), even on Intel x86.
  *
- * As a matter of naming convention, we use $ip for the network address format
- * and $ipString for the presentation format (i.e., human-readable form).
+ * As a matter of naming convention, we use `$ip` for the network address format
+ * and `$ipString` for the presentation format (i.e., human-readable form).
  *
  * We're not using the network address format (in_addr) for socket functions,
  * so we don't have to worry about incompatibility with Windows UNICODE
@@ -126,7 +126,7 @@ class IP
     }
 
     /**
-     * Convert presentation format IP address to network address format.
+     * Converts an IP address in presentation format to network address format.
      *
      * @param string $ipString IP address, either IPv4 or IPv6, e.g., `"127.0.0.1"`.
      * @return string Binary-safe string, e.g., `"\x7F\x00\x00\x01"`.
@@ -195,7 +195,7 @@ class IP
     }
 
     /**
-     * Convert IP address (in network address format) to presentation format.
+     * Converts an IP address (in network address format) to presentation format.
      * This is a backward compatibility function for code that only expects
      * IPv4 addresses (i.e., doesn't support IPv6).
      *
@@ -419,7 +419,7 @@ class IP
     }
 
     /**
-     * Get hostname for a given IP address.
+     * Retirms the hostname for a given IP address.
      *
      * @param string $ipStr Human-readable IP address.
      * @return string The hostname or unmodified $ipStr on failure.
diff --git a/core/Nonce.php b/core/Nonce.php
index c877228a9168c1f52a43aa771ab071390f2375e9..e90c5af37438f4cd0a2c278396248f5247f2ba50 100644
--- a/core/Nonce.php
+++ b/core/Nonce.php
@@ -19,7 +19,7 @@ use Piwik\Session\SessionNamespace;
  * part of a robust defense against cross-site request forgery (CSRF/XSRF). This
  * class provides static methods that create and manage nonce values.
  * 
- * Nonces in Piwik are stored as a session variable and have a configurable expiration:
+ * Nonces in Piwik are stored as a session variable and have a configurable expiration.
  *
  * Learn more about nonces [here](http://en.wikipedia.org/wiki/Cryptographic_nonce).
  * 
@@ -29,7 +29,7 @@ use Piwik\Session\SessionNamespace;
 class Nonce
 {
     /**
-     * Returns the existing nonce. If none exists, a new nonce will be generated.
+     * Returns an existing nonce by ID. If none exists, a new nonce will be generated.
      *
      * @param string $id Unique id to avoid namespace conflicts, e.g., `'ModuleName.ActionName'`.
      * @param int $ttl Optional time-to-live in seconds; default is 5 minutes. (ie, in 5 minutes,
@@ -66,9 +66,9 @@ class Nonce
      * The request is valid if the referrer is a local URL (see {@link Url::isLocalUrl()})
      * and if the HTTP origin is valid (see {@link getAcceptableOrigins()}).
      *
-     * @param string $id Unique id
-     * @param string $cnonce Nonce sent to client
-     * @return bool  true if valid; false otherwise
+     * @param string $id The nonce's unique ID. See {@link getNonce()}.
+     * @param string $cnonce Nonce sent from client.
+     * @return bool `true` if valid; `false` otherwise.
      */
     static public function verifyNonce($id, $cnonce)
     {
@@ -110,7 +110,7 @@ class Nonce
     }
 
     /**
-     * Returns Origin HTTP header or false if not found.
+     * Returns the **Origin** HTTP header or `false` if not found.
      * 
      * @return string|bool
      */
@@ -123,7 +123,7 @@ class Nonce
     }
 
     /**
-     * Returns a list acceptable values for the HTTP Origin header.
+     * Returns a list acceptable values for the HTTP **Origin** header.
      *
      * @return array
      */
diff --git a/core/Notification.php b/core/Notification.php
index 208ee11c6610783d37a3726957b3b9b77a299264..7c9289d609cd38849097ba9b7513e5251d53c4d6 100644
--- a/core/Notification.php
+++ b/core/Notification.php
@@ -17,10 +17,11 @@ namespace Piwik;
  * Notifications consist of a message, a context (the message type), a priority
  * and a display type.
  * 
- * A notification's context will affect the way the message looks, but not how it
- * is displayed. A notification's display type will determine how the message is
- * displayed. The priority determines where it is shown in the list of
- * all displayed notifications.
+ * **The context** affects the way the message looks, but not how it is displayed.
+ * 
+ * **The display type** determines how the message is displayed.
+ * 
+ * **The priority** determines where it is shown in the list of all displayed notifications.
  * 
  * ### Examples
  * 
@@ -76,7 +77,7 @@ class Notification
     const PRIORITY_MAX    = 100;
 
     /**
-     * If this flag applied, no close icon will be displayed. _Note: persistent notifications always have a close
+     * If this flag is applied, no close icon will be displayed. _Note: persistent notifications always have a close
      * icon._
      * 
      * See {@link $flags}.
@@ -149,7 +150,7 @@ class Notification
 
     /**
      * If true, the message will not be escaped before being outputted as HTML. If you set this to
-     * true, make sure you escape text yourself in order to avoid any possible XSS vulnerabilities.
+     * `true`, make sure you escape text yourself in order to avoid XSS vulnerabilities.
      * 
      * @var bool
      */
diff --git a/core/Option.php b/core/Option.php
index 8c90022f9963937fc845539e8ce4687a93538776..c7908598c13af4ea4cbbffc70aedb80841b49a92 100644
--- a/core/Option.php
+++ b/core/Option.php
@@ -42,7 +42,7 @@ class Option
      * Returns the option value for the requested option `$name`.
      * 
      * @param string $name The option name.
-     * @return string|bool The value or false, if not found.
+     * @return string|false The value or `false`, if not found.
      */
     public static function get($name)
     {
@@ -78,7 +78,7 @@ class Option
      *
      * @param string $namePattern Pattern of key to match. `'%'` characters should be used as wildcards, and literal
      *                            `'_'` characters should be escaped.
-     * @param string $value If supplied options will be deleted only if their value matches this value.
+     * @param string $value If supplied, options will be deleted only if their value matches this value.
      */
     public static function deleteLike($namePattern, $value = null)
     {
diff --git a/core/Period.php b/core/Period.php
index 91a6856c5460ea7fda7cd06fb044c4b702e79a7d..73b647599d32e9437902820c94cbe4e2b80d6266 100644
--- a/core/Period.php
+++ b/core/Period.php
@@ -20,16 +20,15 @@ use Piwik\Period\Year;
 /**
  * Date range representation.
  * 
- * Piwik allows users to view aggregated statistics for each day and for date
- * ranges consisting of several days. When requesting data, a _date_ string and
- * a _period_ string must be used to specify the date range to view statistics
- * for. This is the class that Piwik uses to represent and manipulate those
- * date ranges.
+ * Piwik allows users to view aggregated statistics for single days and for date
+ * ranges consisting of several days. When requesting data, a **date** string and
+ * a **period** string must be used to specify the date range that the data regards.
+ * This is the class Piwik uses to represent and manipulate those date ranges.
  * 
  * There are five types of periods in Piwik: day, week, month, year and range,
  * where **range** is any date range. The reason the other periods exist instead
- * of just **range** is that Piwik will archive for days, weeks, months and years
- * periodically, while every other date range is archived on-demand.
+ * of just **range** is that Piwik will pre-archive reports for days, weeks, months
+ * and years, while every other date range is archived on-demand.
  * 
  * ### Examples
  * 
@@ -74,9 +73,9 @@ abstract class Period
     }
 
     /**
-     * Creates a new Period instance with a period ID and Date instance.
+     * Creates a new Period instance with a period ID and {@link Date} instance.
      * 
-     * Note: This method cannot create Range periods.
+     * _Note: This method cannot create {@link Period\Range} periods._
      * 
      * @param string $strPeriod `"day"`, `"week"`, `"month"`, `"year"`, `"range"`.
      * @param Date|string $date A date within the period or the range of dates.
@@ -119,11 +118,20 @@ abstract class Period
     }
 
     /**
-     * Returns true $dateString and $period correspond to multiple periods.
-     *
+     * Returns true if `$dateString` and `$period` represent multiple periods.
+     * 
+     * Will return true for date/period combinations where date references multiple
+     * dates and period is not `'range'`. For example, will return true for:
+     * 
+     * - **date** = `2012-01-01,2012-02-01` and **period** = `'day'`
+     * - **date** = `2012-01-01,2012-02-01` and **period** = `'week'`
+     * - **date** = `last7` and **period** = `'month'`
+     * 
+     * etc.
+     * 
      * @static
-     * @param  $dateString The `'date'` query parameter value.
-     * @param  $period The `'period'` query parameter value.
+     * @param  $dateString The **date** query parameter value.
+     * @param  $period The **period** query parameter value.
      * @return boolean
      */
     public static function isMultiplePeriod($dateString, $period)
@@ -135,11 +143,11 @@ abstract class Period
     }
 
     /**
-     * Creates a period instance using a Site instance and two strings describing
-     * the period & date.
+     * Creates a Period instance using a period, date and timezone.
      *
-     * @param string $timezone
-     * @param string $period The period string: day, week, month, year, range
+     * @param string $timezone The timezone of the date. Only used if `$date` is `'now'`, `'today'`,
+     *                         `'yesterday'` or `'yesterdaySameTime'`.
+     * @param string $period The period string: `"day"`, `"week"`, `"month"`, `"year"`, `"range"`.
      * @param string $date The date or date range string. Can be a special value including
      *                     `'now'`, `'today'`, `'yesterday'`, `'yesterdaySameTime'`.
      * @return \Piwik\Period
@@ -211,7 +219,7 @@ abstract class Period
     /**
      * Returns the period ID.
      * 
-     * @return int A integer unique to this type of period.
+     * @return int A unique integer for this type of period.
      */
     public function getId()
     {
@@ -267,9 +275,10 @@ abstract class Period
     /**
      * Add a date to the period.
      *
-     * Protected because it not yet supported to add periods after the initialization
+     * Protected because adding periods after initialization is not supported.
      *
      * @param \Piwik\Period $period Valid Period object
+     * @ignore
      */
     protected function addSubperiod($period)
     {
diff --git a/core/Plugin/API.php b/core/Plugin/API.php
index 474b73fa2910164b0f34e3646d7037c9b29cda6b..732f55ac70094613f0d9ce9a08bca0d53a97f125 100644
--- a/core/Plugin/API.php
+++ b/core/Plugin/API.php
@@ -16,9 +16,11 @@ use Piwik\Singleton;
 /**
  * The base class of all API singletons.
  * 
- * Plugins that want to expose functionality through an API should create a class
- * that derives from this one. Every public method in that class will be callable
- * through Piwik's API.
+ * Plugins that want to expose functionality through the Reporting API should create a class
+ * that extends this one. Every public method in that class that is not annotated with **@ignore**
+ * will be callable through Piwik's Web API.
+ * 
+ * _Note: If your plugin calculates and stores reports, they should be made available through the API._
  * 
  * ### Examples
  * 
diff --git a/core/Plugin/Archiver.php b/core/Plugin/Archiver.php
index e87e709383fc2c2e92e85acc9f005b29dc036d6c..84c9b5526d93841ba16d1ccae197f5c4ec32e10f 100644
--- a/core/Plugin/Archiver.php
+++ b/core/Plugin/Archiver.php
@@ -15,8 +15,16 @@ use Piwik\ArchiveProcessor;
 use Piwik\Config as PiwikConfig;
 
 /**
- * The base class that should be extended by plugins that archive their own
- * metrics.
+ * The base class that should be extended by plugins that compute their own
+ * analytics data.
+ * 
+ * Descendants should implement the {@link aggregateDayReport()} and {@link aggregateMultipleReports()}
+ * methods.
+ * 
+ * Both of these methods should persist analytics data using the {@link \Piwik\ArchiveProcessor}
+ * instance returned by {@link getProcessor()}. The {@link aggregateDayReport()} method should
+ * compute analytics data using the {@link \Piwik\DataAccess\LogAggregator} instance
+ * returned by {@link getLogAggregator()}.
  * 
  * ### Examples
  * 
@@ -56,13 +64,13 @@ abstract class Archiver
     /**
      * Constructor.
      * 
-     * @param ArchiveProcessor $aggregator The ArchiveProcessor instance sent to the archiving
-     *                                     event observer.
+     * @param ArchiveProcessor $processor The ArchiveProcessor instance to use when persisting archive
+     *                                    data.
      */
-    public function __construct(ArchiveProcessor $aggregator)
+    public function __construct(ArchiveProcessor $processor)
     {
         $this->maximumRows = PiwikConfig::getInstance()->General['datatable_archiving_maximum_rows_standard'];
-        $this->processor = $aggregator;
+        $this->processor = $processor;
     }
 
     /**
@@ -71,10 +79,10 @@ abstract class Archiver
      * Implementations of this method should do more computation intensive activities such
      * as aggregating data across log tables. Since this method only deals w/ data logged for a day,
      * aggregating individual log table rows isn't a problem. Doing this for any larger period,
-     * however, would cause performance issues.
+     * however, would cause performance degradation.
      * 
-     * Aggregate log table rows using a {@link Piwik\DataAccess\LogAggregator} instance. Get a {@link Piwik\DataAccess\LogAggregator} instance
-     * using the {@link getLogAggregator()} method.
+     * Aggregate log table rows using a {@link Piwik\DataAccess\LogAggregator} instance. Get a
+     * {@link Piwik\DataAccess\LogAggregator} instance using the {@link getLogAggregator()} method.
      */
     abstract public function aggregateDayReport();
 
@@ -86,15 +94,17 @@ abstract class Archiver
      * week than to aggregate each log entry of the week.
      * 
      * Use {@link Piwik\ArchiveProcessor::aggregateNumericMetrics()} and {@link Piwik\ArchiveProcessor::aggregateDataTableRecords()}
-     * to aggregate archived reports. Get the {@link Piwik\ArchiveProcessor} instance using the {@link getProcessor()}.
+     * to aggregate archived reports. Get the {@link Piwik\ArchiveProcessor} instance using the {@link getProcessor()}
+     * method.
      */
     abstract public function aggregateMultipleReports();
 
     /**
-     * Returns an {@link Piwik\ArchiveProcessor} instance that can be used to insert archive data for
-     * this period, segment and site.
+     * Returns a {@link Piwik\ArchiveProcessor} instance that can be used to insert archive data for
+     * the period, segment and site we are archiving data for.
      * 
      * @return \Piwik\ArchiveProcessor
+     * @api
      */
     protected function getProcessor()
     {
@@ -106,6 +116,7 @@ abstract class Archiver
      * for this period, segment and site.
      * 
      * @return \Piwik\DataAccess\LogAggregator
+     * @api
      */
     protected function getLogAggregator()
     {
diff --git a/core/Plugin/ConsoleCommand.php b/core/Plugin/ConsoleCommand.php
index 4c0169ae331d29a3fd5199193e49d3c88afdd55e..54405256a55434f516ff951d250a3ef59a46936f 100644
--- a/core/Plugin/ConsoleCommand.php
+++ b/core/Plugin/ConsoleCommand.php
@@ -23,6 +23,11 @@ use Symfony\Component\Console\Input\InputInterface;
  */
 class ConsoleCommand extends SymfonyCommand
 {
+    /**
+     * Constructor.
+     * 
+     * @param string|null $name The name of the command, eg, `'generate:api'`.
+     */
     public function __construct($name = null)
     {
         if (!Common::isPhpCliMode()) {
diff --git a/core/Plugin/Controller.php b/core/Plugin/Controller.php
index da5c8a8def9f36574620f98ee143422c6b07b887..27fb10fa9eaf2e3bed925782743bb88fdab1ea9e 100644
--- a/core/Plugin/Controller.php
+++ b/core/Plugin/Controller.php
@@ -42,9 +42,10 @@ use Piwik\API\Proxy;
  * 
  * Plugins that wish to add display HTML should create a Controller that either
  * extends from this class or from {@link ControllerAdmin}. Every public method in
- * the controller will be exposed as a controller action.
+ * the controller will be exposed as a controller method and can be invoked via
+ * an HTTP request.
  * 
- * Learn more about Piwik's MVC system [here](#).
+ * Learn more about Piwik's MVC system [here](/guides/mvc-in-piwik).
  * 
  * ### Examples
  * 
@@ -77,7 +78,7 @@ abstract class Controller
     protected $pluginName;
 
     /**
-     * The value of the `'date'` query parameter.
+     * The value of the **date** query parameter.
      *
      * @var string
      * @api
@@ -93,7 +94,7 @@ abstract class Controller
     protected $date;
 
     /**
-     * The value of the `'idSite'` query parameter.
+     * The value of the **idSite** query parameter.
      * 
      * @var int
      * @api
@@ -101,7 +102,7 @@ abstract class Controller
     protected $idSite;
 
     /**
-     * The Site object created with ($idSite)[#idSite].
+     * The Site object created with {@link $idSite}.
      * 
      * @var Site
      * @api
@@ -110,6 +111,7 @@ abstract class Controller
 
     /**
      * Constructor.
+     * 
      * @api
      */
     public function __construct()
@@ -135,11 +137,11 @@ abstract class Controller
     }
 
     /**
-     * Helper method that converts "today" or "yesterday" to the specified timezone.
+     * Helper method that converts `"today"` or `"yesterday"` to the specified timezone.
      * If the date is absolute, ie. YYYY-MM-DD, it will not be converted to the timezone.
      *
-     * @param string $date today, yesterday, YYYY-MM-DD
-     * @param string $timezone default timezone to use
+     * @param string $date `'today'`, `'yesterday'`, `'YYYY-MM-DD'`
+     * @param string $timezone The timezone to use.
      * @return Date
      * @api
      */
@@ -194,7 +196,6 @@ abstract class Controller
      *
      * @param ViewInterface $view The view to render.
      * @return string|void
-     * @api
      */
     protected function renderView(ViewInterface $view)
     {
@@ -210,6 +211,7 @@ abstract class Controller
      * @throws \Exception if `$pluginName` is not an existing plugin or if `$apiAction` is not an
      *                    existing method of the plugin's API.
      * @return string|void See `$fetch`.
+     * @api
      */
     protected function renderReport($apiAction)
     {
@@ -375,12 +377,10 @@ abstract class Controller
     /**
      * Returns a URL to a sparkline image for a report served by the current plugin.
      * 
-     * The result of this URL should be used with the [sparkline()](#) twig function.
+     * The result of this URL should be used with the [sparkline()](/api-reference/Piwik/View#twig) twig function.
      * 
      * The current site ID and period will be used.
      * 
-     * See {@link Piwik\Visualization\Sparkline} for more information about the Sparkline visualization.
-     *
      * @param string $action Method name of the controller that serves the report.
      * @param array $customParameters The array of query parameter name/value pairs that
      *                                should be set in result URL.
@@ -406,7 +406,7 @@ abstract class Controller
     }
 
     /**
-     * Sets the first date available in the calendar.
+     * Sets the first date available in the period selector's calendar.
      *
      * @param Date $minDate The min date.
      * @param View $view The view that contains the period selector.
@@ -420,8 +420,8 @@ abstract class Controller
     }
 
     /**
-     * Sets the last date available in the calendar. Usually this just the "today" date
-     * for a site (which can depend on the timezone of a site).
+     * Sets the last date available in the period selector's calendar. Usually this is just the "today" date
+     * for a site (which varies based on the timezone of a site).
      *
      * @param Date $maxDate The max date.
      * @param View $view The view that contains the period selector.
@@ -684,8 +684,7 @@ abstract class Controller
     }
 
     /**
-     * Helper method used to redirect the current http request to another module/action.
-     * If specified, will also change the idSite, date and/or period query parameters.
+     * Helper method used to redirect the current HTTP request to another module/action.
      * 
      * This function will exit immediately after executing.
      *
@@ -745,6 +744,8 @@ abstract class Controller
 
     /**
      * Returns default site ID that Piwik should load.
+     * 
+     * _Note: This value is a Piwik setting set by each user._
      *
      * @return bool|int
      * @api
@@ -775,6 +776,8 @@ abstract class Controller
     /**
      * Returns default date for Piwik reports.
      *
+     * _Note: This value is a Piwik setting set by each user._
+     * 
      * @return string `'today'`, `'2010-01-01'`, etc.
      * @api
      */
@@ -818,12 +821,10 @@ abstract class Controller
     }
 
     /**
-     * Checks that the token_auth in the URl matches the current logged in user's token_auth.
+     * Checks that the token_auth in the URL matches the currently logged-in user's token_auth.
      * 
-     * This is a protection against CSRF should be used in controller
-     * actions that are either invoked via AJAX or redirect to a page
-     * within the site. It should be used in all controller actions that modify
-     * Piwik or user settings.
+     * This is a protection against CSRF and should be used in all controller
+     * methods that modify Piwik or any user settings.
      * 
      * **The token_auth should never appear in the browser's address bar.**
      *
@@ -877,7 +878,7 @@ abstract class Controller
      * @param int $currentValue The value to calculate evolution to.
      * @param string $pastDate The date of past value.
      * @param int $pastValue The value in the past to calculate evolution from.
-     * @return string|bool The HTML or false if the evolution is 0 and the current value is 0.
+     * @return string|false The HTML or `false` if the evolution is 0 and the current value is 0.
      * @api
      */
     protected function getEvolutionHtml($date, $currentValue, $pastDate, $pastValue)
diff --git a/core/Plugin/ControllerAdmin.php b/core/Plugin/ControllerAdmin.php
index ae9ff0d9bb490d9bc0b16d400cd8f10f3f7cdac4..f20ceb1111321e1f9eaf3fd396c6b2d2b50df436 100644
--- a/core/Plugin/ControllerAdmin.php
+++ b/core/Plugin/ControllerAdmin.php
@@ -26,8 +26,6 @@ use Piwik\View;
  * See {@link Controller} to learn more about Piwik controllers.
  * 
  * @package Piwik
- *
- * @api
  */
 abstract class ControllerAdmin extends Controller
 {
@@ -45,6 +43,9 @@ abstract class ControllerAdmin extends Controller
         self::setBasicVariablesAdminView($view);
     }
 
+    /**
+     * @ignore
+     */
     static public function displayWarningIfConfigFileNotWritable()
     {
         $isConfigFileWritable = PiwikConfig::getInstance()->isFileWritable();
@@ -61,7 +62,7 @@ abstract class ControllerAdmin extends Controller
     }
 
     /**
-     * Assigns a set of variables to a view that would be useful to an Admin controller.
+     * Assigns view properties that would be useful to views that render admin pages.
      * 
      * Assigns the following variables:
      * 
diff --git a/core/Plugin/Manager.php b/core/Plugin/Manager.php
index 47a012a38a19110464a1e9a25d3c68c5366d8206..502f5b0f833d8eb7f6019759e7b4c89941ca5c18 100644
--- a/core/Plugin/Manager.php
+++ b/core/Plugin/Manager.php
@@ -144,7 +144,7 @@ class Manager extends Singleton
     }
 
     /**
-     * Returns true if a plugin has been activated.
+     * Returns `true` if a plugin has been activated.
      *
      * @param string $name Name of plugin, eg, `'Actions'`.
      * @return bool
@@ -157,7 +157,7 @@ class Manager extends Singleton
     }
 
     /**
-     * Returns true if plugin is loaded (in memory).
+     * Returns `true` if plugin is loaded (in memory).
      *
      * @param string $name Name of plugin, eg, `'Acions'`.
      * @return bool
@@ -343,8 +343,9 @@ class Manager extends Singleton
     }
 
     /**
-     * Returns the theme currently enabled.
-     * If no theme is enabled, Zeitgeist is returned (default theme)
+     * Returns the currently enabled theme.
+     * 
+     * If no theme is enabled, the **Zeitgeist** plugin is returned (this is the base and default theme).
      *
      * @return Plugin
      * @api
@@ -385,8 +386,9 @@ class Manager extends Singleton
     /**
      * Returns info regarding all plugins. Loads plugins that can be loaded.
      *
-     * @return array An array that maps plugin names with arrays of plugin info. Plugin
-     *               info arrays will contain the following entries:
+     * @return array An array that maps plugin names with arrays of plugin information. Plugin
+     *               information consists of the following entries:
+     * 
      *               - **activated**: Whether the plugin is activated.
      *               - **alwaysActivated**: Whether the plugin should always be activated,
      *                                      or not.
@@ -443,7 +445,7 @@ class Manager extends Singleton
     }
 
     /**
-     * Returns true if the plugin is bundled with core or false if it is third party.
+     * Returns `true` if the plugin is bundled with core or `false` if it is third party.
      *
      * @param string $name The name of the plugin, eg, `'Actions'`.
      * @return bool
@@ -481,9 +483,9 @@ class Manager extends Singleton
 
 
     /**
-     * Load the specified plugins
+     * Load the specified plugins.
      *
-     * @param array $pluginsToLoad Array of plugins to load
+     * @param array $pluginsToLoad Array of plugins to load.
      */
     public function loadPlugins(array $pluginsToLoad)
     {
@@ -497,7 +499,7 @@ class Manager extends Singleton
     }
 
     /**
-     * Disable plugin loading
+     * Disable plugin loading.
      */
     public function doNotLoadPlugins()
     {
@@ -505,7 +507,7 @@ class Manager extends Singleton
     }
 
     /**
-     * Disable loading of "always activated" plugins
+     * Disable loading of "always activated" plugins.
      */
     public function doNotLoadAlwaysActivatedPlugins()
     {
@@ -824,7 +826,7 @@ class Manager extends Singleton
     }
 
     /**
-     * Return list of names of installed plugins.
+     * Return names of all installed plugins.
      *
      * @return array
      * @api
diff --git a/core/Plugin/Settings.php b/core/Plugin/Settings.php
index 2966ae7075a48987d34667b0f83798eb00106c7d..c8521b9acf2b7f5329f6af195923a40c0218d639 100644
--- a/core/Plugin/Settings.php
+++ b/core/Plugin/Settings.php
@@ -16,8 +16,8 @@ use Piwik\Settings\Setting;
 use Piwik\Settings\StorageInterface;
 
 /**
- * Base class of all Settings providers. Plugins that define their own settings can extend
- * this class to easily make their settings available to Piwik users.
+ * Base class of all plugin settings providers. Plugins that define their own configuration settings
+ * can extend this class to easily make their settings available to Piwik users.
  * 
  * Descendants of this class should implement the {@link init()} method and call the
  * {@link addSetting()} method for each of the plugin's settings.
diff --git a/core/Plugin/ViewDataTable.php b/core/Plugin/ViewDataTable.php
index 2cd67bbd9e0d7b00f7fa6b1b31fb4e6c13948bf2..65c5ab86fcb4d3b9fb7141653e770137c2073fbf 100644
--- a/core/Plugin/ViewDataTable.php
+++ b/core/Plugin/ViewDataTable.php
@@ -25,7 +25,7 @@ use Piwik\ViewDataTable\RequestConfig as VizRequest;
 /**
  * The base class of all report visualizations.
  * 
- * ViewDataTable instances load analytics data via Piwik's API and then output some
+ * ViewDataTable instances load analytics data via Piwik's Reporting API and then output some
  * type of visualization of that data.
  * 
  * Visualizations can be in any format. HTML-based visualizations should extend
@@ -38,7 +38,7 @@ use Piwik\ViewDataTable\RequestConfig as VizRequest;
  * class is used.
  * 
  * The specific subclass to create is determined, first, by the **viewDataTable** query paramater.
- * If this parameter is not set, then the default visualization type for the report that is being
+ * If this parameter is not set, then the default visualization type for the report being
  * displayed is used.
  *
  * ### Configuring ViewDataTables
@@ -51,13 +51,13 @@ use Piwik\ViewDataTable\RequestConfig as VizRequest;
  * 
  * Display properties can be set at any time before rendering.
  * 
- * **Request parameters**
+ * **Request properties**
  * 
- * Request parameters are similar to display properties in the way they are set. They are,
+ * Request properties are similar to display properties in the way they are set. They are,
  * however, not used to customize ViewDataTable instances, but in the request to Piwik's
  * API when loading analytics data.
  * 
- * Request parameters are set by setting the fields of a {@link Piwik\ViewDataTable\RequestConfig} object stored in
+ * Request properties are set by setting the fields of a {@link Piwik\ViewDataTable\RequestConfig} object stored in
  * the {@link $requestConfig} field. They can be set at any time before rendering.
  * Setting them after data is loaded will have no effect.
  * 
@@ -71,7 +71,7 @@ use Piwik\ViewDataTable\RequestConfig as VizRequest;
  *    in the {@hook ViewDataTable.configure} event.
  * 
  * ViewDataTable instances are configured by setting and modifying display properties and request
- * parameters.
+ * properties.
  * 
  * ### Creating new visualizations
  * 
@@ -156,11 +156,15 @@ abstract class ViewDataTable implements ViewInterface
     protected $dataTable = null;
 
     /**
+     * Contains display properties for this visualization.
+     * 
      * @var \Piwik\ViewDataTable\Config
      */
     public $config;
 
     /**
+     * Contains request properties for this visualization.
+     * 
      * @var \Piwik\ViewDataTable\RequestConfig
      */
     public $requestConfig;
@@ -171,8 +175,9 @@ abstract class ViewDataTable implements ViewInterface
     protected $request;
 
     /**
-     * Constructor. Initializes the default config, requestConfig and the request itself. After configuring some
-     * mandatory properties reports can modify the view by listening to the hook 'ViewDataTable.configure'.
+     * Constructor. Initializes display and request properties to their default values.
+     * Posts the {@hook ViewDataTable.configure} event which plugins can use to configure the
+     * way reports are displayed.
      */
     public function __construct($controllerAction, $apiMethodToRequestDataTable)
     {
@@ -230,9 +235,13 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Returns the default config. Custom viewDataTables can change the default config to their needs by either
-     * modifying this config or creating an own Config class that extends the default Config.
+     * Returns the default config instance.
+     * 
+     * Visualizations that define their own display properties should override this method and
+     * return an instance of their new {@link Piwik\ViewDataTable\Config} descendant.
      *
+     * See the last example {@link ViewDataTable here} for more information.
+     * 
      * @return \Piwik\ViewDataTable\Config
      */
     public static function getDefaultConfig()
@@ -241,9 +250,13 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Returns the default request config. Custom viewDataTables can change the default config to their needs by either
-     * modifying this config or creating an own RequestConfig class that extends the default RequestConfig.
+     * Returns the default request config instance.
+     * 
+     * Visualizations that define their own request properties should override this method and
+     * return an instance of their new {@link Piwik\ViewDataTable\RequestConfig} descendant.
      *
+     * See the last example {@link ViewDataTable here} for more information.
+     * 
      * @return \Piwik\ViewDataTable\RequestConfig
      */
     public static function getDefaultRequestConfig()
@@ -265,7 +278,9 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Returns the viewDataTable ID for this DataTable visualization. Derived classes  should declare a const ID field
+     * Returns the viewDataTable ID for this DataTable visualization.
+     * 
+     * Derived classes should not override this method. They should instead declare a const ID field
      * with the viewDataTable ID.
      *
      * @throws \Exception
@@ -284,10 +299,13 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Detects whether the viewDataTable or one of its ancestors has the given id.
-     *
-     * @param  string $viewDataTableId
+     * Returns `true` if this instance's or any of its ancestors' viewDataTable IDs equals the supplied ID,
+     * `false` if otherwise.
+     * 
+     * Can be used to test whether a ViewDataTable object is an instance of a certain visualization or not,
+     * without having to know where that visualization is.
      *
+     * @param  string $viewDataTableId The viewDataTable ID to check for, eg, `'table'`.
      * @return bool
      */
     public function isViewDataTableId($viewDataTableId)
@@ -298,10 +316,10 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Returns the DataTable loaded from the API
+     * Returns the DataTable loaded from the API.
      *
      * @return DataTable
-     * @throws \Exception if not yet defined
+     * @throws \Exception if not yet loaded.
      */
     public function getDataTable()
     {
@@ -314,10 +332,10 @@ abstract class ViewDataTable implements ViewInterface
 
     /**
      * To prevent calling an API multiple times, the DataTable can be set directly.
-     * It won't be loaded again from the API in this case
+     * It won't be loaded from the API in this case.
      *
-     * @param $dataTable
-     * @return void $dataTable DataTable
+     * @param DataTable $dataTable The DataTable to use.
+     * @return void
      */
     public function setDataTable($dataTable)
     {
@@ -390,7 +408,8 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Determine if the view data table requests a single data table or not.
+     * Returns `true` if this instance will request a single DataTable, `false` if requesting
+     * more than one.
      *
      * @return bool
      */
@@ -412,11 +431,14 @@ abstract class ViewDataTable implements ViewInterface
     }
 
     /**
-     * Here you can define whether your visualization can display a specific data table or not. For instance you may
-     * only display your visualization in case a single data table is requested. If the method returns true, the footer
-     * icon will be displayed.
+     * Returns `true` if this visualization can display some type of data or not.
+     * 
+     * New visualization classes should override this method if they can only visualize certain
+     * types of data. The evolution graph visualization, for example, can only visualize
+     * sets of DataTables. If the API method used results in a single DataTable, the evolution
+     * graph footer icon should not be displayed.
      *
-     * @param  ViewDataTable $view
+     * @param  ViewDataTable $view Contains the API request being checked.
      * @return bool
      */
     public static function canDisplayViewDataTable(ViewDataTable $view)
diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php
index 73982f7c599a88a34f83c555adb0dc781fd5536f..a9df227bd37f812c02b52f2212f6c5ed22c737ea 100644
--- a/core/Plugin/Visualization.php
+++ b/core/Plugin/Visualization.php
@@ -47,9 +47,11 @@ use Piwik\ViewDataTable\Manager as ViewDataTableManager;
  * - The report is loaded through Piwik's Reporting API.
  * - The display and request properties that require report data in order to determine a default
  *   value are defaulted. These properties are:
+ * 
  *   - {@link Piwik\ViewDataTable\Config::$columns_to_display}
  *   - {@link Piwik\ViewDataTable\RequestConfig::$filter_sort_column}
  *   - {@link Piwik\ViewDataTable\RequestConfig::$filter_sort_order}
+ * 
  * - Priority filters are applied to the report (see {@link Piwik\ViewDataTable\Config::$filters}).
  * - The filters that are applied to every report in the Reporting API (called **generic filters**)
  *   are applied. (see {@link Piwik\API\Request})
@@ -122,17 +124,22 @@ use Piwik\ViewDataTable\Manager as ViewDataTableManager;
  *         public function beforeRender()
  *         {
  *             $this->config->max_graph_elements = false;
- *             $this->config->datatable_js_type  = 'TreemapDataTable';
+ *             $this->config->datatable_js_type  = 'MyVisualization';
  *             $this->config->show_flatten_table = false;
  *             $this->config->show_pagination_control = false;
  *             $this->config->show_offset_information = false;
  *         }
  *     }
- * 
- * @api
  */
 class Visualization extends ViewDataTable
 {
+    /**
+     * The Twig template file to use when rendering, eg, `"@MyPlugin/_myVisualization.twig"`.
+     * 
+     * Must be defined by classes that extend Visualization.
+     * 
+     * @api
+     */
     const TEMPLATE_FILE = '';
 
     private $templateVars = array();
@@ -223,11 +230,12 @@ class Visualization extends ViewDataTable
     }
 
     /**
-     * Assigns a template variable. All assigned variables are available in the twig view template afterwards. You can
-     * assign either one variable by setting $vars and $value or an array of key/value pairs.
+     * Assigns a template variable making it available in the Twig template specified by
+     * {@link TEMPLATE_FILE}.
      *
-     * @param array|string $vars
-     * @param mixed  $value
+     * @param array|string $vars One or more variable names to set.
+     * @param mixed $value The value to set each variable to.
+     * @api
      */
     public function assignTemplateVar($vars, $value = null)
     {
@@ -240,6 +248,13 @@ class Visualization extends ViewDataTable
         }
     }
 
+    /**
+     * Returns `true` if there is data to display, `false` if otherwise.
+     * 
+     * Derived classes should override this method if they change the amount of data that is loaded.
+     * 
+     * @api
+     */
     protected function isThereDataToDisplay()
     {
         return true;
@@ -483,39 +498,43 @@ class Visualization extends ViewDataTable
     }
 
     /**
-     * Hook that is intended to change the request config that is sent to the API.
+     * Hook that is called before loading report data from the API.
+     * 
+     * Use this method to change the request parameters that is sent to the API when requesting
+     * data.
      */
     public function beforeLoadDataTable()
     {
     }
 
     /**
-     * Hook that is executed before generic filters like "filter_limit" and "filter_offset" are applied
+     * Hook that is executed before generic filters are applied.
+     * 
+     * Use this method if you need access to the entire dataset (since generic filters will
+     * limit and truncate reports).
      */
     public function beforeGenericFiltersAreAppliedToLoadedDataTable()
     {
-
     }
 
     /**
-     * This hook is executed after generic filters like "filter_limit" and "filter_offset" are applied
+     * Hook that is executed after generic filters are applied.
      */
     public function afterGenericFiltersAreAppliedToLoadedDataTable()
     {
-
     }
 
     /**
-     * This hook is executed after the data table is loaded and after all filteres are applied.
-     * Format the data that you want to pass to the view here.
+     * Hook that is executed after the report data is loaded and after all filters have been applied.
+     * Use this method to format the report data before the view is rendered.
      */
     public function afterAllFiltersAreApplied()
     {
     }
 
     /**
-     * Hook to make sure config properties have a specific value because the default config can be changed by a
-     * report or by request ($_GET and $_POST) params.
+     * Hook that is executed directly before rendering. Use this hook to force display properties to
+     * be a certain value, despite changes from plugins and query parameters.
      */
     public function beforeRender()
     {
diff --git a/core/ScheduledTask.php b/core/ScheduledTask.php
index 705e606c76e8a8cc7cda80bf463c88b840160c1f..7fedcfd7472442fe14093cdad1a8f827bfacd6ad 100644
--- a/core/ScheduledTask.php
+++ b/core/ScheduledTask.php
@@ -15,7 +15,7 @@ use Exception;
 use Piwik\ScheduledTime;
 
 /**
- * Contains metadata describing a chunk of PHP code that should be executed at regular
+ * Contains metadata referencing PHP code that should be executed at regular
  * intervals.
  * 
  * See the {@link TaskScheduler} docs to learn more about scheduled tasks.
@@ -72,10 +72,9 @@ class ScheduledTask
     /**
      * Constructor.
      * 
-     * @param mixed $objectInstance The object or class name for the class that contains the method to
-     *                              regularly execute. Usually this will be a {@link Plugin} instance.
-     * @param string $methodName The name of the method of `$objectInstance` that will be regularly
-     *                           executed.
+     * @param mixed $objectInstance The object or class that contains the method to execute regularly.
+     *                              Usually this will be a {@link Plugin} instance.
+     * @param string $methodName The name of the method that will be regularly executed.
      * @param mixed|null $methodParameter An optional parameter to pass to the method when executed.
      *                                    Must be convertible to string.
      * @param ScheduledTime|null $scheduledTime A {@link ScheduledTime} instance that describes when the method
@@ -111,7 +110,7 @@ class ScheduledTask
     }
 
     /**
-     * Returns the object instance on which the method should be executed. Returns a class
+     * Returns the object instance that contains the method to execute. Returns a class
      * name if the method is static.
      * 
      * @return mixed
@@ -122,7 +121,7 @@ class ScheduledTask
     }
 
     /**
-     * Returns the class name that contains the method to execute regularly.
+     * Returns the name of the class that contains the method to execute.
      * 
      * @return string
      */
@@ -132,7 +131,7 @@ class ScheduledTask
     }
 
     /**
-     * Returns the method name that will be regularly executed.
+     * Returns the name of the method that will be executed.
      * 
      * @return string
      */
@@ -142,7 +141,7 @@ class ScheduledTask
     }
 
     /**
-     * Returns the a value that will be passed to the method when executed, or `null` if
+     * Returns the value that will be passed to the method when executed, or `null` if
      * no value will be supplied.
      * 
      * @return string|null
@@ -186,9 +185,9 @@ class ScheduledTask
 
     /**
      * Returns a unique name for this scheduled task. The name is stored in the DB and is used
-     * to store when tasks were last executed. The name is created using:
+     * to store a task's previous execution time. The name is created using:
      * 
-     * - the class name that contains the method to execute,
+     * - the name of the class that contains the method to execute,
      * - the name of the method to regularly execute,
      * - and the value that is passed to the executed task.
      * 
diff --git a/core/Settings/Setting.php b/core/Settings/Setting.php
index ba58abbc3442b27fbedf39c0c79e160107a6e787..670ba37c88ecc024e7e5479d8c6b0617cf95277f 100644
--- a/core/Settings/Setting.php
+++ b/core/Settings/Setting.php
@@ -31,9 +31,9 @@ abstract class Setting
     public $type = null;
 
     /**
-     * Describes how the setting should be manipulated through Piwik's UI.
+     * Describes what HTML element should be used to manipulate the setting through Piwik's UI.
      *
-     * See {@link Piwik\Plugin\Settings} for a list of supportted control types.
+     * See {@link Piwik\Plugin\Settings} for a list of supported control types.
      * 
      * @var string
      */
@@ -73,7 +73,7 @@ abstract class Setting
     public $introduction    = null;
 
     /**
-     * Text that will be appear directly underneath the setting title in the _Plugin Settings_ admin
+     * Text that will appear directly underneath the setting title in the _Plugin Settings_ admin
      * page. If set, should be a short description of the setting.
      * 
      * @var null|string
@@ -98,13 +98,11 @@ abstract class Setting
      * 
      * **Example**
      * 
-     * ```
-     * $setting->validate = function ($value, Setting $setting) {
-     *     if ($value > 60) {
-     *         throw new \Exception('The time limit is not allowed to be greater than 60 minutes.');
+     *     $setting->validate = function ($value, Setting $setting) {
+     *         if ($value > 60) {
+     *             throw new \Exception('The time limit is not allowed to be greater than 60 minutes.');
+     *         }
      *     }
-     * }
-     * ```
      *
      * @var null|\Closure
      */
@@ -120,15 +118,13 @@ abstract class Setting
      *
      * **Example**
      * 
-     * ```
-     * $setting->transform = function ($value, Setting $setting) {
-     *     if ($value > 30) {
-     *         $value = 30;
-     *     }
+     *     $setting->transform = function ($value, Setting $setting) {
+     *         if ($value > 30) {
+     *             $value = 30;
+     *         }
      *
-     *     return (int) $value;
-     * }
-     * ```
+     *         return (int) $value;
+     *     }
      *
      * @var null|\Closure
      */
@@ -185,7 +181,7 @@ abstract class Setting
     }
 
     /**
-     * Returns true if this setting can be displayed for the current user, false if otherwise.
+     * Returns `true` if this setting can be displayed for the current user, `false` if otherwise.
      * 
      * @return bool
      */
diff --git a/core/Settings/SystemSetting.php b/core/Settings/SystemSetting.php
index e96f1a1fb0cf2ae5d61936f90b2c79ffa9251f62..50e79e11c626845e3b74cec8fe60e843c72ee87f 100644
--- a/core/Settings/SystemSetting.php
+++ b/core/Settings/SystemSetting.php
@@ -16,6 +16,8 @@ use Piwik\Piwik;
 /**
  * Describes a system wide setting. Only the super user can change this type of setting and
  * the value of this setting will affect all users.
+ * 
+ * See {@link \Piwik\Plugin\Settings}.
  *
  * @package Piwik
  * @subpackage Settings
@@ -38,7 +40,7 @@ class SystemSetting extends Setting
     }
 
     /**
-     * Returns the display order. User settings are displayed after system settings.
+     * Returns the display order. System settings are displayed before user settings.
      * 
      * @return int
      */
diff --git a/core/Settings/UserSetting.php b/core/Settings/UserSetting.php
index 7512f693c4231302cf8c830e94d89ea9b0a1aee5..696d940b42789d9c523090c1413edbdd4bf80b5a 100644
--- a/core/Settings/UserSetting.php
+++ b/core/Settings/UserSetting.php
@@ -14,8 +14,8 @@ use Piwik\Common;
 use Piwik\Piwik;
 
 /**
- * Describes a per user setting. Each user will be able to change this setting but each user
- * can set a different value. Changes from one user will not affect other users.
+ * Describes a per user setting. Each user will be able to change this setting for themselves,
+ * but not for other users.
  *
  * @package Piwik
  * @subpackage Settings
@@ -39,7 +39,7 @@ class UserSetting extends Setting
 
         $this->setUserLogin($userLogin);
 
-        $this->displayedForCurrentUser = !Piwik::isUserIsAnonymous() && Piwik::isUserHasSomeViewAccess();
+        $this->displayedForCurrentUser = Piwik::isUserHasSomeViewAccess();
     }
 
     /**
diff --git a/core/SettingsPiwik.php b/core/SettingsPiwik.php
index 58ac848a9a5175fce29f9396d2f54584398cc0e1..353256e7d76bb56f1a427319799eeef6d4b04102 100644
--- a/core/SettingsPiwik.php
+++ b/core/SettingsPiwik.php
@@ -51,10 +51,9 @@ class SettingsPiwik
     public static $cachedKnownSegmentsToArchive = null;
 
     /**
-     * Returns the list of stored segments to pre-process for all sites when executing cron archiving.
+     * Returns every stored segment to pre-process for each site during cron archiving.
      *
      * @return array The list of stored segments that apply to all sites.
-     * @api
      */
     public static function getKnownSegmentsToArchive()
     {
@@ -159,7 +158,7 @@ class SettingsPiwik
     static public $piwikUrlCache = null;
 
     /**
-     * Returns the URL to this Piwik instance, eg. http://demo.piwik.org/ or http://example.org/piwik/.
+     * Returns the URL to this Piwik instance, eg. **http://demo.piwik.org/** or **http://example.org/piwik/**.
      *
      * @return string
      * @api
@@ -196,7 +195,7 @@ class SettingsPiwik
     }
 
     /**
-     * Returns true if segmentation is allowed for this user, false if otherwise.
+     * Returns `true` if segmentation is allowed for this user, `false` if otherwise.
      *
      * @return bool
      * @api
@@ -210,9 +209,8 @@ class SettingsPiwik
     /**
      * Returns true if unique visitors should be processed for the given period type.
      * 
-     * Unique visitor processing is controlled by the **[General] enable_processing_unique_visitors_...**
-     * INI config options. By default, day/week/month periods always process unique visitors and
-     * year/range are not.
+     * Unique visitor processing is controlled by the `[General] enable_processing_unique_visitors_...`
+     * INI config options. By default, unique visitors are processed only for day/week/month periods.
      *
      * @param string $periodLabel `"day"`, `"week"`, `"month"`, `"year"` or `"range"`
      * @return bool
diff --git a/core/SettingsServer.php b/core/SettingsServer.php
index c43b1f9502a3e126ee8192fc286bbdf618ec9693..0e6baf131d5b87359e5c5639a7df63a59d31841e 100644
--- a/core/SettingsServer.php
+++ b/core/SettingsServer.php
@@ -12,14 +12,15 @@ namespace Piwik;
 
 /**
  * Contains helper methods that can be used to get information regarding the
- * server, its settings and PHP settings.
+ * server, its settings and currently used PHP settings.
  *
  * @package Piwik
  */
 class SettingsServer
 {
     /**
-     * Returns true if the current script execution was triggered misc/cron/archive.php.
+     * Returns true if the current script execution was triggered by the cron archiving
+     * script (**misc/cron/archive.php**).
      *
      * Helpful for error handling: directly throw error without HTML (eg. when DB is down).
      * 
@@ -33,7 +34,7 @@ class SettingsServer
     }
 
     /**
-     * Returns true if running on Microsoft IIS 7 (or above), false if otherwise.
+     * Returns `true` if running on Microsoft IIS 7 (or above), `false` if otherwise.
      *
      * @return bool
      * @api
@@ -48,7 +49,7 @@ class SettingsServer
     }
 
     /**
-     * Returns true if running on an Apache web server, false if otherwise.
+     * Returns `true` if running on an Apache web server, `false` if otherwise.
      *
      * @return bool
      * @api
@@ -62,7 +63,7 @@ class SettingsServer
     }
 
     /**
-     * Returns true if running on a Windows operating system, false if otherwise.
+     * Returns `true` if running on a Windows operating system, `false` if otherwise.
      *
      * @since 0.6.5
      * @return bool
@@ -74,8 +75,8 @@ class SettingsServer
     }
 
     /**
-     * Returns true if this php version/build supports timezone manipulation
-     * (e.g., php >= 5.2, or compiled with EXPERIMENTAL_DATE_SUPPORT=1 for
+     * Returns `true` if this PHP version/build supports timezone manipulation
+     * (e.g., php >= 5.2, or compiled with **EXPERIMENTAL_DATE_SUPPORT=1** for
      * php < 5.2).
      *
      * @return bool
@@ -92,9 +93,9 @@ class SettingsServer
     }
 
     /**
-     * Returns true if the GD PHP extension is available, false if otherwise.
+     * Returns `true` if the GD PHP extension is available, `false` if otherwise.
      * 
-     * ImageGraph and sparklines depend on the GD extension.
+     * _Note: ImageGraph and the sparkline report visualization depend on the GD extension._
      *
      * @return bool
      * @api
diff --git a/core/UrlHelper.php b/core/UrlHelper.php
index f6daa0734d3d9f2825d2abeef51e9b7593ab0934..7092906aa76db66cbdd184078765134113ee9f98 100644
--- a/core/UrlHelper.php
+++ b/core/UrlHelper.php
@@ -19,8 +19,7 @@ class UrlHelper
 {
     /**
      * Converts an array of query parameter name/value mappings into a query string.
-     * Parameters that are in `$parametersToExclude` will not appear in the result
-     * query string.
+     * Parameters that are in `$parametersToExclude` will not appear in the result.
      *
      * @static
      * @param $queryParameters Array of query parameters, eg, `array('site' => '0', 'date' => '2012-01-01')`.
@@ -113,7 +112,7 @@ class UrlHelper
      * Returns a URL created from the result of the [parse_url](http://php.net/manual/en/function.parse-url.php)
      * function.
      * 
-     * Copied from the PHP comments at http://php.net/parse_url
+     * Copied from the PHP comments at [http://php.net/parse_url](http://php.net/parse_url).
      * 
      * @param array $parsed Result of [parse_url](http://php.net/manual/en/function.parse-url.php).
      * @return false|string The URL or `false` if `$parsed` isn't an array.
@@ -144,7 +143,7 @@ class UrlHelper
     /**
      * Returns a URL query string as an array.
      *
-     * @param string $urlQuery The query string.
+     * @param string $urlQuery The query string, eg, `'?param1=value1&param2=value2'`.
      * @return array eg, `array('param1' => 'value1', 'param2' => 'value2')`
      * @api
      */
@@ -221,7 +220,7 @@ class UrlHelper
     /**
      * Returns the path and query string of a URL.
      *
-     * @param string $url
+     * @param string $url The URL.
      * @return string eg, `/test/index.php?module=CoreHome` if `$url` is `http://piwik.org/test/index.php?module=CoreHome`.
      * @api
      */
diff --git a/core/WidgetsList.php b/core/WidgetsList.php
index a3b1098940c8560a5b04c1dd30a14bcd5f8dda2f..d2c2c63cc7acbe489c020761d7fe080c3eaed757 100644
--- a/core/WidgetsList.php
+++ b/core/WidgetsList.php
@@ -14,7 +14,7 @@ namespace Piwik;
  * Manages the global list of reports that can be displayed as dashboard widgets.
  * 
  * Reports are added as dashboard widgets through the {@hook WidgetsList.addWidgets}
- * event. Plugins should call {@link add()} in event observers for this event.
+ * event. Observers for this event should call the {@link add()} method to add reports.
  * 
  * @package PluginsFunctions
  * @api
@@ -38,12 +38,12 @@ class WidgetsList
     /**
      * Returns all available widgets.
      *
-     * @return array Maps widget categories with an array of widget information, eg,
+     * @return array Array Mapping widget categories with an array of widget information, eg,
      *               ```
      *               array(
      *                   'Visitors' => array(
-     *                       array(...),
-     *                       array(...)
+     *                       array(...), // info about first widget in this category
+     *                       array(...) // info about second widget in this category, etc.
      *                   ),
      *                   'Visits' => array(
      *                       array(...),
@@ -157,11 +157,11 @@ class WidgetsList
     }
 
     /**
-     * Removes one more widgets from the widget list.
+     * Removes one or more widgets from the widget list.
      * 
      * @param string $widgetCategory The widget category. Can be a translation token.
      * @param string|false $widgetName The name of the widget to remove. Cannot be a 
-     *                                 translation token. If not supplied, entire category
+     *                                 translation token. If not supplied, the entire category
      *                                 will be removed.
      */
     static public function remove($widgetCategory, $widgetName = false)
@@ -179,11 +179,10 @@ class WidgetsList
     }
 
     /**
-     * Returns true if the widget with the given parameters exists in the widget list,
-     * false if otherwise.
+     * Returns `true` if a report exists in the widget list, `false` if otherwise.
      *
-     * @param string $controllerName The controller name of the widget's report.
-     * @param string $controllerAction The controller action of the widget's report.
+     * @param string $controllerName The controller name of the report.
+     * @param string $controllerAction The controller action of the report.
      * @return bool
      */
     static public function isDefined($controllerName, $controllerAction)