diff --git a/includes/charts.pages.inc b/includes/charts.pages.inc
index 9e34b1a3cd6157a643ea2f5eb1bf309e1cca2325..ece8aae9043f7efb68c0f3f255a9b1ae60c6edd6 100644
--- a/includes/charts.pages.inc
+++ b/includes/charts.pages.inc
@@ -40,9 +40,6 @@ define('CHARTS_SINGLE_AXIS', 'y_only');
  */
 define('CHARTS_DUAL_AXIS', 'xy');
 
-// Store Charts preprocess theme functions in a separate .inc file.
-\Drupal::moduleHandler()->loadInclude('charts', 'inc', 'charts.theme');
-
 /**
  * Retrieve a list of all charting libraries available.
  *
@@ -611,7 +608,7 @@ function charts_default_settings_form($form, $form_state) {
  */
 function charts_default_settings_form_submit($form, $form_state) {
   \Drupal::state()
-    ->set('charts_default_settings', $form_state['values']['charts_default_settings']); //was variable_set
+    ->set('charts_default_settings', $form_state['values']['charts_default_settings']);
 }
 
 
diff --git a/modules/charts_c3/src/Charts/C3ChartsRender.php b/modules/charts_c3/src/Charts/C3ChartsRender.php
index 8e26f97f35fb06d8a695bad2eecbfd5f13d1bc1b..d1a46f52149787183eafb012dbbbf5fae9bfe9b6 100644
--- a/modules/charts_c3/src/Charts/C3ChartsRender.php
+++ b/modules/charts_c3/src/Charts/C3ChartsRender.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\charts_c3\Charts;
 
+use Drupal\charts\Charts\ChartsRenderInterface;
 use Drupal\charts\Util\Util;
 use Drupal\charts_c3\Settings\CThree\ChartType;
 use Drupal\charts_c3\Settings\CThree\CThree;
@@ -10,16 +11,10 @@ use Drupal\charts_c3\Settings\CThree\ChartData;
 use Drupal\charts_c3\Settings\CThree\ChartColor;
 use Drupal\charts_c3\Settings\CThree\ChartAxis;
 
-class C3ChartsRender {
-
-  public function __construct($categories, $seriesData, $options, $attachmentDisplayOptions, &$variables, $chartId) {
+class C3ChartsRender implements ChartsRenderInterface {
 
+  public function __construct() {
     Util::checkMissingLibrary('charts_c3', '/vendor/cthree/c3.min.js');
-    $c3 = $this->charts_c3_render_charts($options, $categories, $seriesData, $chartId, $attachmentDisplayOptions);
-    $variables['chart_type'] = 'c3';
-    $variables['content_attributes']['data-chart'][] = json_encode($c3);
-    $variables['attributes']['id'][0] = $chartId;
-    $variables['attributes']['class'][] = 'charts-c3';
   }
 
   /**
@@ -31,7 +26,7 @@ class C3ChartsRender {
    *
    * @return CThree
    */
-  private function charts_c3_render_charts($options, $categories = [], $seriesData = [], $chartId, $attachmentDisplayOptions = []) {
+  public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) {
 
     $noAttachmentDisplays = count($attachmentDisplayOptions);
     $yAxis = [];
@@ -108,7 +103,9 @@ class C3ChartsRender {
     $chartColor->setPattern($seriesColors);
     $c3->setColor($chartColor);
 
-    return $c3;
+    $variables['chart_type'] = 'c3';
+    $variables['content_attributes']['data-chart'][] = json_encode($c3);
+    $variables['attributes']['id'][0] = $chartId;
+    $variables['attributes']['class'][] = 'charts-c3';
   }
-
 }
diff --git a/modules/charts_google/src/Charts/GoogleChartsRender.php b/modules/charts_google/src/Charts/GoogleChartsRender.php
index 925aefabcd700cc4ad56ddfa938c40be9032c375..f67527efb1ef0ca3baea76515a771192e59655fd 100644
--- a/modules/charts_google/src/Charts/GoogleChartsRender.php
+++ b/modules/charts_google/src/Charts/GoogleChartsRender.php
@@ -2,30 +2,16 @@
 
 namespace Drupal\charts_google\Charts;
 
+use Drupal\charts\Charts\ChartsRenderInterface;
 use Drupal\charts\Util\Util;
 use Drupal\charts_google\Settings\Google\GoogleOptions;
 use Drupal\charts_google\Settings\Google\ChartType;
 use Drupal\charts_google\Settings\Google\ChartArea;
 
-class GoogleChartsRender {
+class GoogleChartsRender implements ChartsRenderInterface {
 
-  private $googleData;
-  private $googleOptions;
-  private $googleChartType;
-  private $chartId;
-
-  public function __construct($categories, $seriesData, $options, $attachmentDisplayOptions, &$variables, $chartId) {
+  public function __construct() {
     Util::checkMissingLibrary('charts_google', '/vendor/google/loader.js');
-    $this->chartId = $chartId;
-    $this->googleData = $this->charts_google_render_charts($categories, $seriesData);
-    $this->googleOptions = $this->charts_google_create_charts_options($options, $seriesData, $attachmentDisplayOptions);
-    $this->googleChartType = $this->charts_google_create_chart_type($options);
-    $variables['chart_type'] = 'google';
-    $variables['attributes']['class'][0] = 'charts-google';
-    $variables['attributes']['id'][0] = $this->chartId;
-    $variables['content_attributes']['data-chart'][] = $this->googleData;
-    $variables['attributes']['google-options'][1] = json_encode($this->googleOptions);
-    $variables['attributes']['google-chart-type'][2] = json_encode($this->googleChartType);
   }
 
   /**
@@ -35,7 +21,7 @@ class GoogleChartsRender {
    *
    * @return json|string
    */
-  private function charts_google_render_charts($categories = [], $seriesData = []) {
+  public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) {
 
     $dataTable = [];
     for ($j = 0; $j < count($categories); $j++) {
@@ -56,7 +42,14 @@ class GoogleChartsRender {
     array_unshift($dataTableHeader, 'label');
     array_unshift($dataTable, $dataTableHeader);
 
-    return json_encode($dataTable);
+    $googleOptions = $this->charts_google_create_charts_options($options, $seriesData, $attachmentDisplayOptions);
+    $googleChartType = $this->charts_google_create_chart_type($options);
+    $variables['chart_type'] = 'google';
+    $variables['attributes']['class'][0] = 'charts-google';
+    $variables['attributes']['id'][0] = $chartId;
+    $variables['content_attributes']['data-chart'][] = json_encode($dataTable);
+    $variables['attributes']['google-options'][1] = json_encode($googleOptions);
+    $variables['attributes']['google-chart-type'][2] = json_encode($googleChartType);
   }
 
   /**
diff --git a/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php b/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php
index e0116bbc21271d221e81b02f5941a5277d54ab45..f9e8685f7dfe7156b840db5335ec9a59425baf9a 100644
--- a/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php
+++ b/modules/charts_highcharts/src/Charts/HighchartsChartsRender.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\charts_highcharts\Charts;
 
+use Drupal\charts\Charts\ChartsRenderInterface;
 use Drupal\charts\Util\Util;
 use Drupal\charts_highcharts\Settings\Highcharts\ChartType;
 use Drupal\charts_highcharts\Settings\Highcharts\ChartTitle;
@@ -18,17 +19,10 @@ use Drupal\charts_highcharts\Settings\Highcharts\ChartCredits;
 use Drupal\charts_highcharts\Settings\Highcharts\ChartLegend;
 use Drupal\charts_highcharts\Settings\Highcharts\Highcharts;
 
-class HighchartsChartsRender {
-
-  public function __construct($categories, $seriesData, $options, $attachmentDisplayOptions, &$variables, $chartId) {
+class HighchartsChartsRender implements ChartsRenderInterface {
 
+  public function __construct() {
     Util::checkMissingLibrary('charts_highcharts', '/vendor/highcharts/highcharts.js');
-    $highchart = $this->charts_highcharts_render_charts($options, $categories, $seriesData, $attachmentDisplayOptions);
-    $variables['chart_type'] = 'highcharts';
-    $variables['content_attributes']['data-chart'][] = json_encode($highchart);
-    $variables['attributes']['id'][0] = $chartId;
-    $variables['attributes']['class'][] = 'charts-highchart';
-
   }
 
   /**
@@ -42,7 +36,7 @@ class HighchartsChartsRender {
    *
    * @return Highcharts object to be used by highcharts javascripts visualization framework
    */
-  private function charts_highcharts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = []) {
+  public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId) {
 
     $chart = new ChartType();
     $chart->setType($options['type']);
@@ -108,6 +102,9 @@ class HighchartsChartsRender {
     $highchart->setLegend($chartLegend);
     $highchart->setSeries($seriesData);
 
-    return $highchart;
+    $variables['chart_type'] = 'highcharts';
+    $variables['content_attributes']['data-chart'][] = json_encode($highchart);
+    $variables['attributes']['id'][0] = $chartId;
+    $variables['attributes']['class'][] = 'charts-highchart';
   }
 }
diff --git a/src/Charts/ChartsRenderInterface.php b/src/Charts/ChartsRenderInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..3032815a3a9cba981029ed40999851767ecf296d
--- /dev/null
+++ b/src/Charts/ChartsRenderInterface.php
@@ -0,0 +1,12 @@
+<?php
+/**
+ * @file
+ *
+ */
+
+namespace Drupal\charts\Charts;
+
+
+interface ChartsRenderInterface {
+  public function charts_render_charts($options, $categories = [], $seriesData = [], $attachmentDisplayOptions = [], &$variables, $chartId);
+}
\ No newline at end of file
diff --git a/src/Charts/ModuleSelector.php b/src/Charts/ModuleSelector.php
index af5ecc16d117b3a762b4ed233857eaf291d011a0..f97e400b136036e45da3489238d05e062a7d6b37 100644
--- a/src/Charts/ModuleSelector.php
+++ b/src/Charts/ModuleSelector.php
@@ -34,7 +34,8 @@ class ModuleSelector {
     if ('charts_' . $moduleExist) {
       $className = ucfirst($moduleName);
       $moduleChartsRenderer = 'Drupal\charts_' . $moduleName . '\Charts\\' . ucfirst($moduleName) . 'ChartsRender';
-      $chartingModule = new $moduleChartsRenderer($this->categories, $this->seriesData, $this->options, $this->attachmentDisplayOptions, $variables, $this->chartId);
+      $chartingModule = new $moduleChartsRenderer();
+      $chartingModule->charts_render_charts($this->options, $this->categories, $this->seriesData, $this->attachmentDisplayOptions, $variables, $this->chartId);
     }
   }
 }