diff --git a/bundles/org.eclipse.rap.rwt.visualization.google.demo/.project b/bundles/org.eclipse.rap.rwt.visualization.google.demo/.project
index 649ad71..0a2b230 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google.demo/.project
+++ b/bundles/org.eclipse.rap.rwt.visualization.google.demo/.project
@@ -20,9 +20,15 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.pde.PluginNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
 	</natures>
 </projectDescription>
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/Application.java b/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/Application.java
index 6c470bf..7eb2109 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/Application.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/Application.java
@@ -87,10 +87,10 @@
       dataTable.addColumn("thedate", "Date", "date", null);
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("Temperature", "Temperature", "number", null);
-      dataTable.addRow(new Object[] {"Model1", new Date(), Integer.valueOf(389), Double.valueOf(14.8)});
-      dataTable.addRow(new Object[] {"Model1", new Date(4070908800L), Integer.valueOf(450), Integer.valueOf(19)});
-      dataTable.addRow(new Object[] {"Model2", new Date(), Integer.valueOf(389), Double.valueOf(14.8)});
-      dataTable.addRow(new Object[] {"Model2", new Date(4070908800L), Integer.valueOf(700), Integer.valueOf(23)});
+      dataTable.addRow(new Object[] {"Model1", new Date(), new Integer(389), new Double(14.8)});
+      dataTable.addRow(new Object[] {"Model1", new Date(4070908800L), new Integer(450), new Integer(19)});
+      dataTable.addRow(new Object[] {"Model2", new Date(), new Integer(389), new Double(14.8)});
+      dataTable.addRow(new Object[] {"Model2", new Date(4070908800L), new Integer(700), new Integer(23)});
       
       viz = new MotionChart( parent , SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -123,9 +123,9 @@
       JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
       dataTable.addColumn("Date", "Date", "date", null);
       dataTable.addColumn("AverageGPA", "Average GPA", "number", null);
-      dataTable.addRow(new Object[] {new Date(), Double.valueOf(2.85)});
-      dataTable.addRow(new Object[] {new Date(1230809560), Double.valueOf(3.5)});
-      dataTable.addRow(new Object[] {new Date(1210000000), Integer.valueOf(3)});
+      dataTable.addRow(new Object[] {new Date(), new Double(2.85)});
+      dataTable.addRow(new Object[] {new Date(1230809560), new Double(3.5)});
+      dataTable.addRow(new Object[] {new Date(1210000000), new Integer(3)});
       
       viz = new AnnotatedTimeLine( parent, SWT.NONE );
       viz.setWidgetOptions("displayAnnotations: true");
@@ -152,8 +152,8 @@
       dataTable.addColumn("theyear", "Date", "string", null);
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("Temperature", "Temperature", "number", null);
-      dataTable.addRow(new Object[] {"1970", Integer.valueOf(325), Double.valueOf(14.1)});
-      dataTable.addRow(new Object[] {"2009", Integer.valueOf(389), Double.valueOf(14.7)});
+      dataTable.addRow(new Object[] {"1970", new Integer(325), new Double(14.1)});
+      dataTable.addRow(new Object[] {"2009", new Integer(389), new Double(14.7)});
       
       viz = new AreaChart(parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -178,8 +178,8 @@
       dataTable.addColumn("theyear", "Date", "string", null);
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("Temperature", "Temperature", "number", null);
-      dataTable.addRow(new Object[] {"1970", Integer.valueOf(325), Double.valueOf(14.1)});
-      dataTable.addRow(new Object[] {"2009", Integer.valueOf(389), Double.valueOf(14.7)});
+      dataTable.addRow(new Object[] {"1970", new Integer(325), new Double(14.1)});
+      dataTable.addRow(new Object[] {"2009", new Integer(389), new Double(14.7)});
       
       viz = new BarChart( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -204,8 +204,8 @@
       dataTable.addColumn("theyear", "Date", "string", null);
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("Temperature", "Temperature", "number", null);
-      dataTable.addRow(new Object[] {"1970", Integer.valueOf(325), Double.valueOf(14.1)});
-      dataTable.addRow(new Object[] {"2009", Integer.valueOf(389), Double.valueOf(14.7)});
+      dataTable.addRow(new Object[] {"1970", new Integer(325), new Double(14.1)});
+      dataTable.addRow(new Object[] {"2009", new Integer(389), new Double(14.7)});
       
       viz = new ColumnChart( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -229,7 +229,7 @@
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("CH4", "CH4", "number", null);
       dataTable.addColumn("Temperature", "Temperature", "number", null);
-      dataTable.addRow(new Object[] {Integer.valueOf(389), Integer.valueOf(1800), Integer.valueOf(14)});
+      dataTable.addRow(new Object[] {new Integer(389), new Integer(1800), new Integer(14)});
       
       viz = new Gauge( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -252,8 +252,8 @@
       JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
       dataTable.addColumn("Country", "Country", "string", null);
       dataTable.addColumn("Happiness", "Happiness", "number", null);
-      dataTable.addRow(new Object[] {"Tanzania", Integer.valueOf(25)});
-      dataTable.addRow(new Object[] {"US", Integer.valueOf(40)});
+      dataTable.addRow(new Object[] {"Tanzania", new Integer(25)});
+      dataTable.addRow(new Object[] {"US", new Integer(40)});
       
       viz = new Geomap( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -278,9 +278,9 @@
       dataTable.addColumn("Country", "Country", "string", null);
       dataTable.addColumn("Happiness", "Happiness", "number", null);
       dataTable.addColumn("Income", "Income", "number", null);
-      dataTable.addRow(new Object[] {"TZ", Integer.valueOf(25), Integer.valueOf(3)});
-      dataTable.addRow(new Object[] {"US", Integer.valueOf(40), Integer.valueOf(40)});
-      dataTable.addRow(new Object[] {"UK", Integer.valueOf(38), Integer.valueOf(35)});
+      dataTable.addRow(new Object[] {"TZ", new Integer(25), new Integer(3)});
+      dataTable.addRow(new Object[] {"US", new Integer(40), new Integer(40)});
+      dataTable.addRow(new Object[] {"UK", new Integer(38), new Integer(35)});
       
       viz = new IntensityMap( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -306,9 +306,9 @@
       dataTable.addColumn("Provider1", "Provider 1", "number", null);
       dataTable.addColumn("Provider2", "Provider 2", "number", null);
       dataTable.addColumn("Provider3", "Provider 3", "number", null);
-      dataTable.addRow(new Object[] {"May", Integer.valueOf(10), Integer.valueOf(15), Integer.valueOf(20)});
-      dataTable.addRow(new Object[] {"June", Integer.valueOf(12), Integer.valueOf(23), Integer.valueOf(33)});
-      dataTable.addRow(new Object[] {"July", Integer.valueOf(11), Integer.valueOf(25), Integer.valueOf(50)});
+      dataTable.addRow(new Object[] {"May", new Integer(10), new Integer(15), new Integer(20)});
+      dataTable.addRow(new Object[] {"June", new Integer(12), new Integer(23), new Integer(33)});
+      dataTable.addRow(new Object[] {"July", new Integer(11), new Integer(25), new Integer(50)});
       
       viz = new LineChart( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -332,9 +332,9 @@
       JSONGoogleDataTable dataTable = new JSONGoogleDataTable();
       dataTable.addColumn("Activity", "Activity", "string", null);
       dataTable.addColumn("Hours", "Hours per Week", "number", null);
-      dataTable.addRow(new Object[] {"software architect", Integer.valueOf(40)});
-      dataTable.addRow(new Object[] {"primary care medicine", Integer.valueOf(9)});
-      dataTable.addRow(new Object[] {"open source development", Integer.valueOf(10)});
+      dataTable.addRow(new Object[] {"software architect", new Integer(40)});
+      dataTable.addRow(new Object[] {"primary care medicine", new Integer(9)});
+      dataTable.addRow(new Object[] {"open source development", new Integer(10)});
       
       viz = new PieChart( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -359,9 +359,9 @@
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("CH4", "CH4", "number", null);
       dataTable.addColumn("Temperature", "Temperature", "number", null);
-      dataTable.addRow(new Object[] {Integer.valueOf(350), Integer.valueOf(10), Integer.valueOf(22)});
-      dataTable.addRow(new Object[] {Integer.valueOf(375), Integer.valueOf(12), Integer.valueOf(23)});
-      dataTable.addRow(new Object[] {Integer.valueOf(400), Integer.valueOf(16), Integer.valueOf(25)});
+      dataTable.addRow(new Object[] {new Integer(350), new Integer(10), new Integer(22)});
+      dataTable.addRow(new Object[] {new Integer(375), new Integer(12), new Integer(23)});
+      dataTable.addRow(new Object[] {new Integer(400), new Integer(16), new Integer(25)});
       
       viz = new ScatterChart( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
@@ -386,8 +386,8 @@
       dataTable.addColumn("theyear", "Date", "string", null);
       dataTable.addColumn("CO2", "CO2", "number", null);
       dataTable.addColumn("Temperature", "Temperature (C)", "number", null);
-      dataTable.addRow(new Object[] {"1970", Integer.valueOf(325), Double.valueOf(14.1)});
-      dataTable.addRow(new Object[] {"2009", Integer.valueOf(389), Double.valueOf(14.8)});
+      dataTable.addRow(new Object[] {"1970", new Integer(325), new Double(14.1)});
+      dataTable.addRow(new Object[] {"2009", new Integer(389), new Double(14.8)});
       viz = new Table( parent, SWT.NONE );
       viz.setWidgetData(dataTable.toString());
       viz.addListener(SWT.Selection, createSelectionListener());
diff --git a/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/ApplicationWorkbenchAdvisor.java b/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/ApplicationWorkbenchAdvisor.java
index a36db17..72f03fe 100644
--- a/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/ApplicationWorkbenchAdvisor.java
+++ b/bundles/org.eclipse.rap.rwt.visualization.google.demo/src/org/eclipse/rap/rwt/visualization/google/demo/ApplicationWorkbenchAdvisor.java
@@ -34,6 +34,6 @@
 
    public String getInitialWindowPerspectiveId()
    {
-      return PerspectiveFactory.class.getCanonicalName();
+      return PerspectiveFactory.class.getName();
    }
 }
