diff --git a/core/Plugin/Visualization.php b/core/Plugin/Visualization.php
index 17a2ccbc62ed1020b30575e231165459a0cf7150..3dd741607eecc2df3d68e89aa81b254b41022502 100644
--- a/core/Plugin/Visualization.php
+++ b/core/Plugin/Visualization.php
@@ -40,6 +40,8 @@ class Visualization extends ViewDataTable
     const TEMPLATE_FILE = '';
     const CONFIGURE_VIEW_EVENT = 'Visualization.initView';
 
+    private $templateVars = array();
+
     final public function __construct($currentControllerAction, $apiMethodToRequestDataTable, $defaultReportProperties)
     {
         $templateFile = static::TEMPLATE_FILE;
@@ -96,6 +98,7 @@ class Visualization extends ViewDataTable
             $view->error = $loadingError;
         }
 
+        $view->assign($this->templateVars);
         $view->visualization = $this;
         $view->visualizationTemplate = static::TEMPLATE_FILE;
 
@@ -125,6 +128,17 @@ class Visualization extends ViewDataTable
         return $view;
     }
 
+    public function assignTemplateVar($vars, $value = null)
+    {
+        if (is_string($vars)) {
+            $this->templateVars[$vars] = $value;
+        } elseif (is_array($vars)) {
+            foreach ($vars as $key => $value) {
+                $this->templateVars[$key] = $value;
+            }
+        }
+    }
+
     protected function isThereDataToDisplay()
     {
         return true;
diff --git a/core/ViewDataTable/Graph.php b/core/ViewDataTable/Graph.php
index a509b2547b45bf78256cb8e2554efcf4432769de..07a8fe17c9d182504018e9acff6afaf97986e965 100644
--- a/core/ViewDataTable/Graph.php
+++ b/core/ViewDataTable/Graph.php
@@ -56,7 +56,7 @@ abstract class Graph extends Visualization
      */
     public function afterAllFilteresAreApplied()
     {
-        $this->selectable_rows = array_values($this->selectableRows);
+        $this->config->selectable_rows = array_values($this->selectableRows);
 
         $selectableColumns = $this->config->selectable_columns;
 
diff --git a/core/ViewDataTable/Request.php b/core/ViewDataTable/Request.php
index 4e6df3ad2775c8ca54b81cd891ff2a78b73aecdc..df495c46d0dc562501f5a66dcb2cf485e3a4fb94 100644
--- a/core/ViewDataTable/Request.php
+++ b/core/ViewDataTable/Request.php
@@ -21,7 +21,6 @@ use Piwik\Piwik;
 
 class Request
 {
-
     /**
      * @var null|\Piwik\Visualization\Request
      */
@@ -145,6 +144,8 @@ class Request
      */
     public static function shouldLoadExpanded()
     {
+        // TODO this is not the right class for this
+
         // if filter_column_recursive & filter_pattern_recursive are supplied, and flat isn't supplied
         // we have to load all the child subtables.
         return Common::getRequestVar('filter_column_recursive', false) !== false
diff --git a/plugins/CoreVisualizations/Visualizations/Cloud.php b/plugins/CoreVisualizations/Visualizations/Cloud.php
index 719bf7a5b8c68c57c44530aee7283e47669dd120..a59bcaaf7d69de4c2bdc5b8b422b6112988b98d6 100644
--- a/plugins/CoreVisualizations/Visualizations/Cloud.php
+++ b/plugins/CoreVisualizations/Visualizations/Cloud.php
@@ -58,8 +58,8 @@ class Cloud extends Visualization
         }
 
         $columnToDisplay = isset($this->config->columns_to_display[1]) ? $this->config->columns_to_display[1] : 'nb_visits';
+        $labelMetadata   = array();
 
-        $labelMetadata = array();
         foreach ($this->dataTable->getRows() as $row) {
             $logo = false;
             if ($this->config->display_logo_instead_of_label) {
@@ -75,13 +75,14 @@ class Cloud extends Visualization
 
             $this->addWord($label, $row->getColumn($columnToDisplay));
         }
+
         $cloudValues = $this->getCloudValues();
         foreach ($cloudValues as &$value) {
             $value['logoWidth'] = round(max(16, $value['percent']));
         }
 
-        $this->labelMetadata = $labelMetadata;
-        $this->cloudValues   = $cloudValues;
+        $this->assignTemplateVar('labelMetadata', $labelMetadata);
+        $this->assignTemplateVar('cloudValues', $cloudValues);
     }
 
     /**
diff --git a/plugins/ExampleVisualization/SimpleTable.php b/plugins/ExampleVisualization/SimpleTable.php
index 07e686e8fddc52a3790a4a7d0d28ac4ea59359ef..c5ad4312cbd921fd5cba219ef1d06cfeb4c3690e 100644
--- a/plugins/ExampleVisualization/SimpleTable.php
+++ b/plugins/ExampleVisualization/SimpleTable.php
@@ -31,7 +31,7 @@ class SimpleTable extends Visualization
      */
     public function init()
     {
-        $this->vizTitle = 'MyAwesomeTitle';
+        $this->assignTemplateVar('vizTitle', 'MyAwesomeTitle');
     }
 
     public function configureVisualization()