diff --git a/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF b/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF
index 04d83cb..6dad7af 100644
--- a/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF
+++ b/org.eclipse.paho.client.eclipse.view/META-INF/MANIFEST.MF
@@ -1,11 +1,10 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
-Bundle-Name: Eclipse Paho Client View
+Bundle-Name: MQTT Tester View
 Bundle-SymbolicName: org.eclipse.paho.client.eclipse.view;singleton:=true
-Bundle-Version: 1.0.0
+Bundle-Version: 1.0.1
 Bundle-Activator: org.eclipse.paho.client.eclipse.view.Activator
 Bundle-Vendor: ESF
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.jface.action,
  org.eclipse.jface.resource,
@@ -21,4 +20,5 @@
  org.eclipse.ui,
  org.eclipse.ui.part,
  org.eclipse.ui.plugin,
+ org.eclipse.osgi.util,
  org.osgi.framework
diff --git a/org.eclipse.paho.client.eclipse.view/README.md b/org.eclipse.paho.client.eclipse.view/README.md
new file mode 100644
index 0000000..416db3a
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/README.md
@@ -0,0 +1,116 @@
+**Project**  Eclipse Paho MQTT Tester View
+
+**Version**  1.0.1
+
+**Date**     09-11-2012
+
+**Author**   Eurotech Inc.
+
+
+# Overview
+
+The Eclipse Paho MQTT Tester View is an Eclipse plug-in that provides a user interface for performing MQTT-based messaging tasks within Eclipse.  
+
+
+# Installation
+
+The plug-in can be installed using the included update site:
+
+ update_site/update.site.zip
+ 
+1) Unzip the file onto your local machine.  
+
+2) In Eclipse, browse to Help -> Install New Software.
+
+3) Add a new local repository by clicking on the "Add..." button and browsing to the directory that you unzipped above (should contain a site.xml file).  Make sure to name the repository and then click "Ok".  You should now be able to select the repository in the "Work with:" drop down menu and the plug-in should appear in the list.  
+
+4) Select the plug-in:
+
+ Paho Client Eclipse View Feature
+	
+5) Click "Next" and follow the remaining instructions for installing the plug-in.
+
+# Usage
+
+The view can be accessed by navigating to Window -> Show View -> Other..., then expand the "M2M" folder and select "MQTT Tester View".  This will open the interface for the 
+Paho MQTT client.  The interface consists of three tabs: Connection, Publish, and Subscribe.
+
+- Connection Tab
+
+This tab is used to connect the MQTT client to a broker.  A connection must be established in order to publish and subscribe in the remaining tabs.  Here is a brief description of the fields:
+
+Broker Address: (Required) The IP address or URL of the broker
+
+Broker Port:    (Required) The port number of the broker
+
+Client ID:      (Required) A unique identifier to connect with.
+
+Username:       A username, if required by the broker.
+
+Password:       A password, if required by the broker.
+
+Keep Alive:     (Required) The number of seconds between keep alive pings sent to the broker.
+
+Clean Start:    Whether or not to maintain subscriptions across disconnects.
+
+LWT Enable:     Whether to enable Last Will and Testament (LWT).
+
+LWT Topic:      The topic that the broker will publish the LWT on.
+
+LWT Message:    The message that the broker will publish for the LWT.
+
+LWT QoS:	The quality of service that the LWT will be published on.
+
+LWT Retain:	Whether to retain the LWT message.
+
+- Publish Tab
+
+Used to publish messages to the broker.  A message may be a string or a File.  Here is a brief description of the fields:
+
+Topic:	 The topic to publish on.
+
+QoS:     The quality of service to publish on.
+
+Payload: The payload to publish (if publishing a string).
+
+File:    The file to publish (if publishing a file).
+
+- Subscribe Tab
+
+Used to subscribe and unsubscribe on topics.  Once the client is subscribed to a topic, all messages recieved will be displayed to the log below.  Here is a brief description of the fields:
+
+Topic: The topic to subscribe on.
+
+QoS:   The quality of service to subscribe on.
+
+
+# Building
+
+The project requires the Plug-in Development Environment (PDE) in order to build. Information about installing the PDE tools can be found at: 
+
+ www.eclipse.org/pde
+	
+The source for the project itself can be found at:
+
+ http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/
+	
+Once the project is imported into Eclipse, it can be build by right clicking on the project
+and navigating to Export -> Plug-in Developement -> Deployable plug-ins and fragments.
+
+
+## Copyright
+
+Copyright (c) 2012 Eurotech Inc. All rights reserved.
+
+
+## License
+
+This project is released under the Eclipse Public License (EPL) version 1.0
+
+
+## Additional Resources
+
+* [Eclipse Paho project](http://www.eclipse.org/paho/)
+
+* [MQTT Community](http://www.mqtt.org)
+
diff --git a/org.eclipse.paho.client.eclipse.view/README.txt b/org.eclipse.paho.client.eclipse.view/README.txt
deleted file mode 100644
index 302d7f0..0000000
--- a/org.eclipse.paho.client.eclipse.view/README.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-Project:  Eclipse Paho MQTT Client View
-Version:  1.0.0
-Date:     06-06-2012
-Author:   Eurotech Inc.
-
-
-**************
-** Overview **
-**************
-
-The Eclipse Paho MQTT Client View is an Eclipse plug-in that provides a 
-user interface for managing an MQTT client within Eclipse.  
-
-
-******************
-** Installation **
-******************
-
-The plug-in can be installed using the included update site:
-
- update_site/update.site.zip
- 
-1) Unzip the file onto your local machine.  
-
-2) In Eclipse, browse to Help -> Install New Software.
-
-3) Add a new local repository by clicking on the "Add..." button and browsing to the directory
-that you unzipped above (should contain a site.xml file).  Make sure to name the repository
-and then click "Ok".  You should now be able to select the repository in the "Work with:" 
-drop down menu and the plug-in should appear in the list.  
-
-4) Select the plug-in:
-
- Paho Client Eclipse View Feature
-	
-5) Click "Next" and follow the remaining instructions for installing the plug-in.
-
-
-***********
-** Usage **
-***********
-
-The view can be accessed by navigating to Window -> Show View -> Other..., then expand the 
-"Others" folder and select "Eclipse Paho Client View".  This will open the interface for the 
-Paho MQTT client.  The interface consists of three tabs: Connection, Publish, and Subscribe.
-
--Connection Tab
-
-This tab is used to connect the MQTT client to a broker.  A connection
-must be established in order to publish and subscribe in the remaining
-tabs.  Here is a brief description of the fields:
-
-Broker Address: (Required) The IP address or URL of the broker
-Broker Port:    (Required) The port number of the broker
-Client ID:      (Required) A unique identifier to connect with.
-Username:       A username, if required by the broker.
-Password:       A password, if required by the broker.
-Keep Alive:     (Required) The number of seconds between keep alive pings sent to the broker.
-Clean Start:    Whether or not to maintain subscriptions across disconnects.
-LWT Enable:     Whether to enable Last Will and Testament (LWT).
-LWT Topic:      The topic that the broker will publish the LWT on.
-LWT Message:    The message that the broker will publish for the LWT.
-LWT QoS:	The quality of service that the LWT will be published on.
-LWT Retain:	Whether to retain the LWT message.
-
--Publish Tab
-
-Used to publish messages to the broker.  A message may be a string or a File.  Here is a 
-brief description of the fields:
-
-Topic:	 The topic to publish on.
-QoS:     The quality of service to publish on.
-Payload: The payload to publish (if publishing a string).
-File:    The file to publish (if publishing a file).
-
--Subscribe Tab
-
-Used to subscribe and unsubscribe on topics.  Once the client is subcribed to a topic, all 
-messages recieved will be displayed to the log below.  Here is a brief description of the 
-fields:
-
-Topic: The topic to subscribe on.
-QoS:   The quality of service to subscribe on.
-
-
-**************
-** Building **
-**************
-
-The project requires the Plug-in Development Environment (PDE) in order to build. 
-Information about installing the PDE tools can be found at: 
-
- www.eclipse.org/pde
-	
-The source for the project itself can be found at:
-
- http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.java.git/
-	
-Once the project is imported into Eclipse, it can be build by rigt clicking on the project
-and navigating to Export -> Plug-in Developement -> Deployable plug-ins and fragments.
-
-
-***************
-** Copyright **
-***************
-
-Copyright (c) 2012 Eurotech Inc. All rights reserved.
-
-
-*************
-** License **
-*************
-
-This project is released under the Eclipse Public License (EPL) version 1.0
-
-
-******************************
-** Additional Documentation **
-******************************
-
-Eclipse Paho:  http://www.eclipse.org/paho/
-MQTT:          http://www.mqtt.org
-
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/Activator.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/Activator.class
deleted file mode 100644
index 62cd3b2..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/Activator.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/ClientConstants.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/ClientConstants.class
deleted file mode 100644
index c6dae5a..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/ClientConstants.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$1.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$1.class
deleted file mode 100644
index c62c24f..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$1.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$10.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$10.class
deleted file mode 100644
index 6b45fab..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$10.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$11.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$11.class
deleted file mode 100644
index 151547c..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$11.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$2.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$2.class
deleted file mode 100644
index cc88085..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$2.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$3.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$3.class
deleted file mode 100644
index ec4899d..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$3.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$4.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$4.class
deleted file mode 100644
index 6b7ab6b..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$4.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$5.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$5.class
deleted file mode 100644
index e55f83f..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$5.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$6.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$6.class
deleted file mode 100644
index abd667e..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$6.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$7.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$7.class
deleted file mode 100644
index 8cc4b41..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$7.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$8.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$8.class
deleted file mode 100644
index c609f41..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$8.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$9.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$9.class
deleted file mode 100644
index 244d4a9..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView$9.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView.class b/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView.class
deleted file mode 100644
index a7bf33f..0000000
--- a/org.eclipse.paho.client.eclipse.view/bin/org/eclipse/paho/client/eclipse/view/MqttClientView.class
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/build.properties b/org.eclipse.paho.client.eclipse.view/build.properties
index 0d2f5cd..ddd2f47 100644
--- a/org.eclipse.paho.client.eclipse.view/build.properties
+++ b/org.eclipse.paho.client.eclipse.view/build.properties
@@ -3,10 +3,10 @@
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               icons/
+               icons/,\
+               README.md
 additional.bundles = org.eclipse.swt,\
                      org.eclipse.ui,\
                      org.eclipse.core.runtime,\
-                     org.eclipse.core.boot,\
                      org.eclipse.core.resources,\
                      org.eclipse.paho.client.mqttv3
diff --git a/org.eclipse.paho.client.eclipse.view/icons/eurotech.gif b/org.eclipse.paho.client.eclipse.view/icons/eurotech.gif
deleted file mode 100644
index 92732e4..0000000
--- a/org.eclipse.paho.client.eclipse.view/icons/eurotech.gif
+++ /dev/null
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/icons/mqtt_view.png b/org.eclipse.paho.client.eclipse.view/icons/mqtt_view.png
new file mode 100755
index 0000000..a66fac5
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/icons/mqtt_view.png
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/icons/paho.png b/org.eclipse.paho.client.eclipse.view/icons/paho.png
new file mode 100755
index 0000000..344f1f1
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/icons/paho.png
Binary files differ
diff --git a/org.eclipse.paho.client.eclipse.view/plugin.xml b/org.eclipse.paho.client.eclipse.view/plugin.xml
index b8616b0..729b400 100644
--- a/org.eclipse.paho.client.eclipse.view/plugin.xml
+++ b/org.eclipse.paho.client.eclipse.view/plugin.xml
@@ -2,9 +2,15 @@
 <?eclipse version="3.4"?>
 <plugin>
 	<extension point="org.eclipse.ui.views">
+	     <category 
+           id="org.eclipse.ui.paho"
+           name="M2M">
+        </category>
+        
     	<view id="org.eclipse.paho.client.eclipse.view.mqttclientview"
-			name="Eclipse Paho Client View"
-			class="org.eclipse.paho.client.eclipse.view.MqttClientView"
-			icon="icons/eurotech.gif"/>
+			name="MQTT Tester"
+			category="org.eclipse.ui.paho" 
+	        class="org.eclipse.paho.client.eclipse.view.MqttClientView" 
+			icon="icons/mqtt_view.png"/>
 	</extension>
-</plugin>
\ No newline at end of file
+</plugin>
diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java
index 19d4eda..5c8a08c 100644
--- a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Activator.java
@@ -22,7 +22,7 @@
 public class Activator extends AbstractUIPlugin {
 
 	// The plug-in ID
-	public static final String PLUGIN_ID = "com.esf.eclipse.mqtt.client";
+	public static final String PLUGIN_ID = "org.eclipse.paho.client.eclipse.view";
 
 	// The shared instance
 	private static Activator plugin;
diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Messages.java b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Messages.java
new file mode 100755
index 0000000..96b43e6
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/Messages.java
@@ -0,0 +1,92 @@
+package org.eclipse.paho.client.eclipse.view;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.paho.client.eclipse.view.messages"; //$NON-NLS-1$
+	public static String MqttClientView_10;
+	public static String MqttClientView_100;
+	public static String MqttClientView_101;
+	public static String MqttClientView_102;
+	public static String MqttClientView_103;
+	public static String MqttClientView_104;
+	public static String MqttClientView_105;
+	public static String MqttClientView_106;
+	public static String MqttClientView_11;
+	public static String MqttClientView_110;
+	public static String MqttClientView_111;
+	public static String MqttClientView_15;
+	public static String MqttClientView_16;
+	public static String MqttClientView_17;
+	public static String MqttClientView_19;
+	public static String MqttClientView_20;
+	public static String MqttClientView_21;
+	public static String MqttClientView_22;
+	public static String MqttClientView_23;
+	public static String MqttClientView_24;
+	public static String MqttClientView_25;
+	public static String MqttClientView_26;
+	public static String MqttClientView_28;
+	public static String MqttClientView_29;
+	public static String MqttClientView_30;
+	public static String MqttClientView_32;
+	public static String MqttClientView_34;
+	public static String MqttClientView_36;
+	public static String MqttClientView_38;
+	public static String MqttClientView_39;
+	public static String MqttClientView_41;
+	public static String MqttClientView_42;
+	public static String MqttClientView_43;
+	public static String MqttClientView_45;
+	public static String MqttClientView_47;
+	public static String MqttClientView_48;
+	public static String MqttClientView_49;
+	public static String MqttClientView_50;
+	public static String MqttClientView_51;
+	public static String MqttClientView_52;
+	public static String MqttClientView_54;
+	public static String MqttClientView_56;
+	public static String MqttClientView_6;
+	public static String MqttClientView_62;
+	public static String MqttClientView_63;
+	public static String MqttClientView_64;
+	public static String MqttClientView_65;
+	public static String MqttClientView_66;
+	public static String MqttClientView_67;
+	public static String MqttClientView_68;
+	public static String MqttClientView_69;
+	public static String MqttClientView_7;
+	public static String MqttClientView_70;
+	public static String MqttClientView_71;
+	public static String MqttClientView_72;
+	public static String MqttClientView_73;
+	public static String MqttClientView_74;
+	public static String MqttClientView_75;
+	public static String MqttClientView_76;
+	public static String MqttClientView_77;
+	public static String MqttClientView_78;
+	public static String MqttClientView_79;
+	public static String MqttClientView_8;
+	public static String MqttClientView_80;
+	public static String MqttClientView_81;
+	public static String MqttClientView_82;
+	public static String MqttClientView_83;
+	public static String MqttClientView_87;
+	public static String MqttClientView_88;
+	public static String MqttClientView_89;
+	public static String MqttClientView_9;
+	public static String MqttClientView_90;
+	public static String MqttClientView_91;
+	public static String MqttClientView_92;
+	public static String MqttClientView_93;
+	public static String MqttClientView_94;
+	public static String MqttClientView_95;
+	public static String MqttClientView_99;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java
index 7743003..b625da9 100644
--- a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/MqttClientView.java
@@ -55,7 +55,7 @@
 
 /**
  * An MQTT client view.  The top half provides three tabs for Connecting to an MQTT broker, publishing messages,
- * and subscribing on topics.  The bottom half of the view contains a log of all MQTT connections, publishes, and
+ * and subscribing on topics.  The bottom half of the view contains a log of all MQTT connections, publications, and
  * subscription events.
  */
 public class MqttClientView extends ViewPart implements MqttCallback {
@@ -67,20 +67,20 @@
 	// MQTT connection parameters with defaults
 	private static MqttClient mqttClient		= null;
 	private static MqttConnectOptions connOpts	= null;
-	private static String connectAddress 		= "";
+	private static String connectAddress 		= ""; //$NON-NLS-1$
 	private static int connectPort 				= 1883;
-	private static String clientId 				= "";
+	private static String clientId 				= ""; //$NON-NLS-1$
 	private static short keepAlive 				= 30;
 	private static boolean cleanStart 			= true;
 	private static boolean firstConnect 		= true;
 	private static Boolean connected 			= new Boolean(false);
 	private static String tmpMsg 				= null;
-	private static String willTopic 			= "";
-	private static String willMessage 			= "";
+	private static String willTopic 			= ""; //$NON-NLS-1$
+	private static String willMessage 			= ""; //$NON-NLS-1$
 	private static int willQos 					= 0;
 	private static boolean willRetain 			= false;
-	private static String username 				= "";
-	private static String password 				= "";
+	private static String username 				= ""; //$NON-NLS-1$
+	private static String password 				= ""; //$NON-NLS-1$
 	
 	// Current publish parameters with defaults
 	private String publishTopic = null;
@@ -156,24 +156,24 @@
 	    // Create each tab and set its text, tool tip text, image, and control
 		// Connection tab
 	    TabItem one = new TabItem(tabFolder, SWT.NONE);
-	    one.setText("Connection");
-	    one.setToolTipText("Connect to a Broker");
+	    one.setText(Messages.MqttClientView_6);
+	    one.setToolTipText(Messages.MqttClientView_7);
 	    one.setControl(getConnectionControl(tabFolder));
 
 	    // Publish tab
 	    TabItem two = new TabItem(tabFolder, SWT.NONE);
-	    two.setText("Publish");
-	    two.setToolTipText("Publish messages");
+	    two.setText(Messages.MqttClientView_8);
+	    two.setToolTipText(Messages.MqttClientView_9);
 	    two.setControl(getPublishControl(tabFolder));
 
 	    // Subscribe tab
 	    TabItem three = new TabItem(tabFolder, SWT.NONE);
-	    three.setText("Subscribe");
-	    three.setToolTipText("Subscribe and unsubscribe to topics");
+	    three.setText(Messages.MqttClientView_10);
+	    three.setToolTipText(Messages.MqttClientView_11);
 	    three.setControl(getSubscribeControl(tabFolder));
 		
 		messageLog = new Text(sashform, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
-	    messageLog.setFont(new Font(display, new FontData("Courier New", 10, SWT.NORMAL)));
+	    messageLog.setFont(new Font(display, new FontData("Courier New", 10, SWT.NORMAL))); //$NON-NLS-1$
 
 		sashform.setWeights(new int[]{2,1});
 	}
@@ -306,9 +306,9 @@
 			// Update connection information
 			updateInfo();
 			// Build connection string
-			String connectString = "tcp://" + connectAddress + ":" + connectPort;
+			String connectString = "tcp://" + connectAddress + ":" + connectPort; //$NON-NLS-1$ //$NON-NLS-2$
 			if(clientId == null || clientId.length() < 1) {
-				out(getDate() + "Error connecting to " + connectString + ", please enter a valid client ID.");
+				out(getDate() + Messages.MqttClientView_15 + connectString + Messages.MqttClientView_16);
 				return;
 			}
 			// Instantiate client
@@ -319,7 +319,7 @@
 					firstConnect = false;
 				}
 			} catch (MqttException e) {
-				out(getDate() + "Failed to connect to broker: " + e.getMessage());
+				out(getDate() + Messages.MqttClientView_17 + e.getMessage());
 				e.printStackTrace();
 			}
 			
@@ -333,25 +333,25 @@
 				connOpts.setUserName(username);
 			}
 			if (useWill) {
-				if(willTopic == null || willTopic.equals("")) {
-					out("Error connecting:  Please enter a LWT topic.");
+				if(willTopic == null || willTopic.equals("")) { //$NON-NLS-1$
+					out(Messages.MqttClientView_19);
 					return;
 				}
 				connOpts.setWill(mqttClient.getTopic(willTopic), willMessage.getBytes(), willQos, willRetain);
 			}
 			// Attempt to connect
 			try {
-				out(getDate() + "Attempting to connect to broker:  " + connectString);
+				out(getDate() + Messages.MqttClientView_20 + connectString);
 				mqttClient.connect(connOpts);
 			
 				connected = true;
-				out(getDate() + "CONNECTED - Client ID: " + clientId);
+				out(getDate() + Messages.MqttClientView_21 + clientId);
 			} catch (MqttException e) {
-				out(getDate() + "Failed to connect to broker: " + e.getMessage());
+				out(getDate() + Messages.MqttClientView_22 + e.getMessage());
 				e.printStackTrace();
 			}
 		} else {
-			out("Error connecting:  Client is currently connected.");
+			out(Messages.MqttClientView_23);
 		}
 	}
 	
@@ -362,12 +362,12 @@
 		try {
 			if(connected) {
 				mqttClient.disconnect();
-				out(getDate() + "DISCONNECTED");
+				out(getDate() + Messages.MqttClientView_24);
 			} else {
-				out(getDate() + "Error disconnecting:  Client was not connected.");
+				out(getDate() + Messages.MqttClientView_25);
 			}
 		} catch (MqttException e) {
-			out(getDate() + "Error disconnecting:  " + e.getMessage());
+			out(getDate() + Messages.MqttClientView_26 + e.getMessage());
 		}
 		connected = false;
 	}
@@ -378,18 +378,18 @@
 	private void publish() {
 		
 		if(mqttClient != null) {
-			if(publishTopic == null || publishTopic.equals("")) {
-				out("Error publishing:  Please enter a topic to publish on.");
+			if(publishTopic == null || publishTopic.equals("")) { //$NON-NLS-1$
+				out(Messages.MqttClientView_28);
 				return;
 			}
 			try {
 				MqttTopic topic = mqttClient.getTopic(publishTopic);
 				topic.publish(payload, publishQos, retain);
-				out(getDate() + "PUBLISH");
-				out(" Topic:   \"" + publishTopic + "\"\n" + 
-				    " QOS:     " + publishQos +  "\n" +
-				    " Retain:  " + retain + "\n" +
-				    " Payload: \"" + new String(payload) + "\"");
+				out(getDate() + Messages.MqttClientView_29);
+				out(Messages.MqttClientView_30 + publishTopic + "\"\n" +  //$NON-NLS-2$
+				    Messages.MqttClientView_32 + publishQos +  "\n" + //$NON-NLS-2$
+				    Messages.MqttClientView_34 + retain + "\n" + //$NON-NLS-2$
+				    Messages.MqttClientView_36 + new String(payload) + "\""); //$NON-NLS-2$
 			} catch (MqttPersistenceException e) {
 				e.printStackTrace();
 			} catch (NullPointerException e) {
@@ -409,9 +409,9 @@
 				String [] topicArray = {subscribeTopic};
 				int [] qosArray = {subscribeQos};
 				mqttClient.subscribe(topicArray, qosArray);
-				out(getDate() + "SUBSCRIBE");
-				out(" Topic:   \"" + subscribeTopic + "\"\n" + 
-				    " QOS:     " + subscribeQos);
+				out(getDate() + Messages.MqttClientView_38);
+				out(Messages.MqttClientView_39 + subscribeTopic + "\"\n" +  //$NON-NLS-2$
+				    Messages.MqttClientView_41 + subscribeQos);
 			} catch (MqttPersistenceException e) {
 				e.printStackTrace();
 			} catch (NullPointerException e) {
@@ -430,8 +430,8 @@
 			try {
 				String [] topicArray = {subscribeTopic};
 				mqttClient.unsubscribe(topicArray);
-				out(getDate() + "UNSUBSCRIBE");
-				out(" Topic:   \"" + subscribeTopic + "\"");
+				out(getDate() + Messages.MqttClientView_42);
+				out(Messages.MqttClientView_43 + subscribeTopic + "\""); //$NON-NLS-2$
 			} catch (MqttPersistenceException e) {
 				e.printStackTrace();
 			} catch (NullPointerException e) {
@@ -447,17 +447,17 @@
 	 */
 	public void connectionLost(Throwable cause) {
 		connected = false;
-		syncOut(getDate() + "CONNECTION LOST!");
-		String connectString = connectAddress + ":" + connectPort;
-		syncOut(getDate() + "Attempting to reconnect to broker:  " + connectString);
+		syncOut(getDate() + Messages.MqttClientView_45);
+		String connectString = connectAddress + ":" + connectPort; //$NON-NLS-1$
+		syncOut(getDate() + Messages.MqttClientView_47 + connectString);
 		try {
 			mqttClient.connect(connOpts);
 		} catch (Exception e) {
-			syncOut(getDate() + "Failed to reconnect.");
-			syncOut(getDate() + "DISCONNECTED");
+			syncOut(getDate() + Messages.MqttClientView_48);
+			syncOut(getDate() + Messages.MqttClientView_49);
 		}
 		connected = true;
-		syncOut(getDate() + "CONNECTED - Client ID: " + clientId);
+		syncOut(getDate() + Messages.MqttClientView_50 + clientId);
 	}
 
 	/**
@@ -465,16 +465,16 @@
 	 */
 	public void messageArrived(MqttTopic topic, MqttMessage message)
 			throws Exception {
-		syncOut(getDate() + "PUBLISH ARRIVED");
-		syncOut(" Topic:   \"" + topic + "\"");
-		syncOut(" Payload: \"" + new String(message.getPayload()) + "\"");
+		syncOut(getDate() + Messages.MqttClientView_51);
+		syncOut(Messages.MqttClientView_52 + topic + "\""); //$NON-NLS-2$
+		syncOut(Messages.MqttClientView_54 + new String(message.getPayload()) + "\""); //$NON-NLS-2$
 	}
 
 	/**
 	 * Logs that a publish has completed (an acknowledgement has been received from the broker
 	 */
 	public void deliveryComplete(MqttDeliveryToken token) {
-		syncOut(getDate() + "PUBLISH COMPLETE");
+		syncOut(getDate() + Messages.MqttClientView_56);
 	}
 	
 	/**
@@ -493,7 +493,7 @@
 	 * Returns a hex string representation of the byte array
 	 */
 	public static String getHexString(byte[] b) {
-		  String result = "";
+		  String result = ""; //$NON-NLS-1$
 		  for (int i=0; i < b.length; i++) {
 		    result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
 		  }
@@ -504,7 +504,7 @@
 	 * Writes a message to the log
 	 */
 	private void out(String message) {
-		messageLog.append(message + "\n");
+		messageLog.append(message + "\n"); //$NON-NLS-1$
 	}
 	
 	/**
@@ -512,10 +512,10 @@
 	 */
 	private String getDate() {
 		System.currentTimeMillis();
-		SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd hh:mm:ss.SS");
+		SimpleDateFormat formatter = new SimpleDateFormat ("yyyy/MM/dd hh:mm:ss.SS"); //$NON-NLS-1$
 		Date currentTime_1 = new Date();
 		String dateString = formatter.format(currentTime_1);
-		return "[" + dateString + "] ";
+		return "[" + dateString + "] "; //$NON-NLS-1$ //$NON-NLS-2$
 	}
 
 	/**
@@ -529,115 +529,115 @@
 		connectionGroup = new Group(composite, SWT.NONE);
 	    connectionGroup.setLayout(new GridLayout(2, false));
 	    connectionGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-	    connectionGroup.setText("Connection");
+	    connectionGroup.setText(Messages.MqttClientView_62);
 		
 	    // Broker address
 		Label brokerAddressLabel = new Label(connectionGroup, SWT.NULL);
-		brokerAddressLabel.setText("Broker Address: ");
+		brokerAddressLabel.setText(Messages.MqttClientView_63);
 		brokerAddressValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		brokerAddressValue.setLayoutData(new GridData(120,13));
 		brokerAddressValue.setText(connectAddress);
-		brokerAddressValue.setToolTipText("IP address or URL of the broker");
+		brokerAddressValue.setToolTipText(Messages.MqttClientView_64);
 		
 		// Broker port
 		Label brokerPortLabel = new Label(connectionGroup, SWT.NULL);
-		brokerPortLabel.setText(   "Broker Port:    ");
+		brokerPortLabel.setText(   Messages.MqttClientView_65);
 		brokerPortValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		brokerPortValue.setLayoutData(new GridData(30,13));
 		brokerPortValue.setText(Integer.toString(connectPort));
-		brokerPortValue.setToolTipText("Port that the broker is listening on");
+		brokerPortValue.setToolTipText(Messages.MqttClientView_66);
 		
 		// Client ID
 		Label clientIdLabel = new Label(connectionGroup, SWT.NULL);
-		clientIdLabel.setText(     "Client ID:      ");
+		clientIdLabel.setText(     Messages.MqttClientView_67);
 		clientIdValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		clientIdValue.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
 		clientIdValue.setText(clientId);
-		clientIdValue.setToolTipText("Client ID to connect with (must be unique)");
+		clientIdValue.setToolTipText(Messages.MqttClientView_68);
 
 		// Username
 		Label usernameLabel = new Label(connectionGroup, SWT.NULL);
-		usernameLabel.setText(     "Username:       ");
+		usernameLabel.setText(     Messages.MqttClientView_69);
 		usernameValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		usernameValue.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
 		usernameValue.setText(username);
-		usernameValue.setToolTipText("Username to connect with (optional)");
+		usernameValue.setToolTipText(Messages.MqttClientView_70);
 		
 		// Password
 		Label passwordLabel = new Label(connectionGroup, SWT.NULL);
-		passwordLabel.setText(     "Password:       ");
+		passwordLabel.setText(     Messages.MqttClientView_71);
 		passwordValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		passwordValue.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
 		passwordValue.setText(password);
-		usernameValue.setToolTipText("Password to connect with (optional)");
+		passwordValue.setToolTipText(Messages.MqttClientView_72);
 		
 		// Keep alive value in seconds
 		Label keepAliveLabel = new Label(connectionGroup, SWT.NULL);
-		keepAliveLabel.setText(    "Keep Alive:     ");
+		keepAliveLabel.setText(    Messages.MqttClientView_73);
 		keepAliveValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		keepAliveValue.setLayoutData(new GridData(30,13));
 		keepAliveValue.setText(Short.toString(keepAlive));
-		keepAliveValue.setToolTipText("Number of seconds between keep alive pings with the broker");
+		keepAliveValue.setToolTipText(Messages.MqttClientView_74);
 
 		// Clean start
 		Label cleanStartLabel = new Label(connectionGroup, SWT.NULL);
-		cleanStartLabel.setText("Clean Start:  ");
+		cleanStartLabel.setText(Messages.MqttClientView_75);
 		cleanStartCheckBox = new Button(connectionGroup, SWT.CHECK);
 		cleanStartCheckBox.setSelection(cleanStart);
-		cleanStartCheckBox.setToolTipText("Select to enable a clean start");
+		cleanStartCheckBox.setToolTipText(Messages.MqttClientView_76);
 		
 		// LWT checkbox
 		Label useWillLabel = new Label(connectionGroup, SWT.NULL);
-		useWillLabel.setText("LWT Enable:  ");
+		useWillLabel.setText(Messages.MqttClientView_77);
 		willCheckBox = new Button(connectionGroup, SWT.CHECK);
 		willCheckBox.setSelection(false);
-		willCheckBox.setToolTipText("Select to enable the Last Will and Testament (LWT)");
+		willCheckBox.setToolTipText(Messages.MqttClientView_78);
 		
 		// LWT topic
 		Label willTopicLabel = new Label(connectionGroup, SWT.NULL);
-		willTopicLabel.setText("LWT Topic: ");
+		willTopicLabel.setText(Messages.MqttClientView_79);
 		willTopicValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		willTopicValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
 		willTopicValue.setText(willTopic);
 		willTopicValue.setEnabled(useWill);
-		willTopicValue.setToolTipText("Topic that the LWT message is publish on");
+		willTopicValue.setToolTipText(Messages.MqttClientView_80);
 		
 		// LWT message
 		Label willMessageLabel = new Label(connectionGroup, SWT.NULL);
-		willMessageLabel.setText("LWT Message: ");
+		willMessageLabel.setText(Messages.MqttClientView_81);
 		willMessageValue = new Text(connectionGroup, SWT.SINGLE | SWT.BORDER);
 		willMessageValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
 		willMessageValue.setText(willMessage);
 		willMessageValue.setEnabled(useWill);
-		willMessageValue.setToolTipText("LWT message to publish");
+		willMessageValue.setToolTipText(Messages.MqttClientView_82);
 		
 		// LWT quality of service
 		Label willQosLabel = new Label(connectionGroup, SWT.NULL);
-		willQosLabel.setText("LWT QoS: ");
+		willQosLabel.setText(Messages.MqttClientView_83);
 		willQosDrop = new Combo(connectionGroup, SWT.DROP_DOWN | SWT.BORDER);
-		willQosDrop.add("0");
-		willQosDrop.add("1");
-		willQosDrop.add("2");
+		willQosDrop.add("0"); //$NON-NLS-1$
+		willQosDrop.add("1"); //$NON-NLS-1$
+		willQosDrop.add("2"); //$NON-NLS-1$
 		willQosDrop.select(0);
 		
 		// LWT retained flag
 		Label willRetainedLabel = new Label(connectionGroup, SWT.NULL);
-		willRetainedLabel.setText("LWT Retain:  ");
+		willRetainedLabel.setText(Messages.MqttClientView_87);
 		willRetainCheckBox = new Button(connectionGroup, SWT.CHECK);
 		willRetainCheckBox.setSelection(false);
-		willRetainCheckBox.setToolTipText("Select to retain the last LWT message");
+		willRetainCheckBox.setToolTipText(Messages.MqttClientView_88);
 		
 		// Connect button
 		connectButton = new Button(connectionGroup, SWT.PUSH);
 		connectButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));
-		connectButton.setText("Connect");
-		connectButton.setToolTipText("Press to connect to the broker");
+		connectButton.setText(Messages.MqttClientView_89);
+		connectButton.setToolTipText(Messages.MqttClientView_90);
 		
 		// Disconnect button
 		disconnectButton = new Button(connectionGroup, SWT.PUSH);
 		disconnectButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));
-		disconnectButton.setText("Disconnect");
-		disconnectButton.setToolTipText("Press to disconnect from the broker");
+		disconnectButton.setText(Messages.MqttClientView_91);
+		disconnectButton.setToolTipText(Messages.MqttClientView_92);
 		
 		// A modify listeners for modifications to textual parameters
 		ModifyListener listener = new ModifyListener() {
@@ -672,6 +672,7 @@
 
 	/**
 	 * Creates the publish composite and populates it with all the widgets needed to make an MQTT publish.
+	 * TODO: add tooltips for input fields and controls
 	 */
 	private Control getPublishControl(TabFolder tabFolder) {
 		@SuppressWarnings("unused")
@@ -684,31 +685,31 @@
 		publishGroup = new Group(composite, SWT.NONE);
 		publishGroup.setLayout(new GridLayout(3, false));
 		publishGroup.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL));
-		publishGroup.setText("Publish");
+		publishGroup.setText(Messages.MqttClientView_93);
 		
 		// Publish topic
 		Label publishTopicLabel = new Label(publishGroup, SWT.NULL);
-		publishTopicLabel.setText("Topic: ");
+		publishTopicLabel.setText(Messages.MqttClientView_94);
 		publishTopicValue = new Text(publishGroup, SWT.SINGLE | SWT.BORDER);
 		publishTopicValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
-		publishTopicValue.setSize(110, 1);
+		publishTopicValue.setSize(110, 1);
 		
 		tmpNullLabel = new Label(publishGroup, SWT.NULL);
 		
 		// Publish quality of service
 		Label publishQosLabel = new Label(publishGroup, SWT.NULL);
-		publishQosLabel.setText("QoS: ");
+		publishQosLabel.setText(Messages.MqttClientView_95);
 		publishQosDrop = new Combo(publishGroup, SWT.DROP_DOWN | SWT.BORDER);
-		publishQosDrop.add("0");
-		publishQosDrop.add("1");
-		publishQosDrop.add("2");
+		publishQosDrop.add("0"); //$NON-NLS-1$
+		publishQosDrop.add("1"); //$NON-NLS-1$
+		publishQosDrop.add("2"); //$NON-NLS-1$
 		publishQosDrop.select(0);
 		
 		tmpNullLabel = new Label(publishGroup, SWT.NULL);
 		
 		// Publish payload (text)
 		Label publishPayloadLabel = new Label(publishGroup, SWT.NULL);
-		publishPayloadLabel.setText("Payload: ");
+		publishPayloadLabel.setText(Messages.MqttClientView_99);
 		publishPayloadValue = new Text(publishGroup, SWT.SINGLE | SWT.BORDER);
 		publishPayloadValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
 		publishPayloadValue.setSize(110, 1);
@@ -718,27 +719,27 @@
 		
 		Button publishPayloadButton = new Button(publishGroup, SWT.PUSH);
 		publishPayloadButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));
-		publishPayloadButton.setText("Publish Payload");
+		publishPayloadButton.setText(Messages.MqttClientView_100);
 		
 		tmpNullLabel = new Label(publishGroup, SWT.NULL);
 		
 		// Publish payload (file)
 		Label publishFileLabel = new Label(publishGroup, SWT.NULL);
-		publishFileLabel.setText("File: ");
+		publishFileLabel.setText(Messages.MqttClientView_101);
 		publishFileName = new Text(publishGroup, SWT.SINGLE | SWT.BORDER);
 		publishFileName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
 		publishFileName.setSize(100, 1);
 
 		// Browse button for selecting a filename
 		Button browseButton = new Button(publishGroup, SWT.PUSH);
-		browseButton.setText("Browse");
+		browseButton.setText(Messages.MqttClientView_102);
 		
 		tmpNullLabel = new Label(publishGroup, SWT.NULL);
 
 		// Publish file button
 		Button publishFileButton = new Button(publishGroup, SWT.PUSH);
 		publishFileButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));
-		publishFileButton.setText("Publish File");
+		publishFileButton.setText(Messages.MqttClientView_103);
 
 		// Set selection listeners
 		publishPayloadButton.addSelectionListener(publishListener);
@@ -770,6 +771,7 @@
 
 	/**
 	 * Creates the subscribe composite and populates it with all the widgets needed to make an MQTT subscription.
+	 * TODO: add tooltips for input fields and controls
 	 */
 	private Control getSubscribeControl(TabFolder tabFolder) {
 		Composite composite = new Composite(tabFolder, SWT.NONE);
@@ -779,33 +781,33 @@
 		subscribeGroup = new Group(composite, SWT.NONE);
 		subscribeGroup.setLayout(new GridLayout(2, false));
 		subscribeGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
-		subscribeGroup.setText("Subscribe");
+		subscribeGroup.setText(Messages.MqttClientView_104);
 		
 		// Subscribe topic
 		Label subscribeTopicLabel = new Label(subscribeGroup, SWT.NULL);
-		subscribeTopicLabel.setText("Topic: ");
+		subscribeTopicLabel.setText(Messages.MqttClientView_105);
 		subscribeTopicValue = new Text(subscribeGroup, SWT.SINGLE | SWT.BORDER);
 		subscribeTopicValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
 		subscribeTopicValue.setSize(80, 1);
 		
 		// Subscribe quality of service
 		Label subscribeQosLabel = new Label(subscribeGroup, SWT.NULL);
-		subscribeQosLabel.setText("QoS: ");
+		subscribeQosLabel.setText(Messages.MqttClientView_106);
 		subscribeQosDrop = new Combo(subscribeGroup, SWT.DROP_DOWN | SWT.BORDER);
-		subscribeQosDrop.add("0");
-		subscribeQosDrop.add("1");
-		subscribeQosDrop.add("2");
+		subscribeQosDrop.add("0"); //$NON-NLS-1$
+		subscribeQosDrop.add("1"); //$NON-NLS-1$
+		subscribeQosDrop.add("2"); //$NON-NLS-1$
 		subscribeQosDrop.select(0);
 		
 		// Subscribe button
 		Button subscribeButton = new Button(subscribeGroup, SWT.PUSH);
 		subscribeButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));
-		subscribeButton.setText("Subscribe");
+		subscribeButton.setText(Messages.MqttClientView_110);
 		
 		// Unsubscribe button
 		Button unsubscribeButton = new Button(subscribeGroup, SWT.PUSH);
 		unsubscribeButton.setLayoutData(new GridData(ClientConstants.BUTTON_WIDTH, ClientConstants.BUTTON_HEIGHT));
-		unsubscribeButton.setText("Unsubscribe");
+		unsubscribeButton.setText(Messages.MqttClientView_111);
 		
 		// Set selection listeners
 		subscribeButton.addSelectionListener(subscribeListener);
diff --git a/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/messages.properties b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/messages.properties
new file mode 100755
index 0000000..cd97912
--- /dev/null
+++ b/org.eclipse.paho.client.eclipse.view/src/org/eclipse/paho/client/eclipse/view/messages.properties
@@ -0,0 +1,78 @@
+MqttClientView_10=Subscribe
+MqttClientView_100=Publish Payload
+MqttClientView_101=File: 
+MqttClientView_102=Browse
+MqttClientView_103=Publish File
+MqttClientView_104=Subscribe
+MqttClientView_105=Topic: 
+MqttClientView_106=QoS: 
+MqttClientView_11=Subscribe and unsubscribe to topics
+MqttClientView_110=Subscribe
+MqttClientView_111=Unsubscribe
+MqttClientView_15=Error connecting to 
+MqttClientView_16=, please enter a valid client ID.
+MqttClientView_17=Failed to connect to broker: 
+MqttClientView_19=Error connecting:  Please enter a LWT topic.
+MqttClientView_20=Attempting to connect to broker:  
+MqttClientView_21=CONNECTED - Client ID: 
+MqttClientView_22=Failed to connect to broker: 
+MqttClientView_23=Error connecting:  Client is currently connected.
+MqttClientView_24=DISCONNECTED
+MqttClientView_25=Error disconnecting:  Client was not connected.
+MqttClientView_26=Error disconnecting:  
+MqttClientView_28=Error publishing:  Please enter a topic to publish on.
+MqttClientView_29=PUBLISH
+MqttClientView_30=\ Topic:   "
+MqttClientView_32=\ QOS:     
+MqttClientView_34=\ Retain:  
+MqttClientView_36=\ Payload: "
+MqttClientView_38=SUBSCRIBE
+MqttClientView_39=\ Topic:   "
+MqttClientView_41=\ QOS:     
+MqttClientView_42=UNSUBSCRIBE
+MqttClientView_43=\ Topic:   "
+MqttClientView_45=CONNECTION LOST\!
+MqttClientView_47=Attempting to reconnect to broker:  
+MqttClientView_48=Failed to reconnect.
+MqttClientView_49=DISCONNECTED
+MqttClientView_50=CONNECTED - Client ID: 
+MqttClientView_51=PUBLICATION ARRIVED
+MqttClientView_52=\ Topic:   "
+MqttClientView_54=\ Payload: "
+MqttClientView_56=PUBLISH COMPLETE
+MqttClientView_6=Connection
+MqttClientView_62=Connection
+MqttClientView_63=Broker address: 
+MqttClientView_64=IP address or URL of the broker
+MqttClientView_65=Broker port:    
+MqttClientView_66=Port that the broker is listening on
+MqttClientView_67=Client ID:      
+MqttClientView_68=Client ID to connect with (must be unique)
+MqttClientView_69=Username:       
+MqttClientView_7=Connect to a broker
+MqttClientView_70=Username to connect with (optional)
+MqttClientView_71=Password:       
+MqttClientView_72=Password to connect with (optional)
+MqttClientView_73=Keep Alive:     
+MqttClientView_74=Number of seconds between keep alive pings with the broker
+MqttClientView_75=Clean Start:  
+MqttClientView_76=Select to enable a clean start
+MqttClientView_77=LWT Enable:  
+MqttClientView_78=Select to enable the Last Will and Testament (LWT)
+MqttClientView_79=LWT Topic: 
+MqttClientView_8=Publish
+MqttClientView_80=Topic that the LWT message is published on
+MqttClientView_81=LWT Message: 
+MqttClientView_82=LWT message to publish
+MqttClientView_83=LWT QoS: 
+MqttClientView_87=LWT Retain:  
+MqttClientView_88=Select to retain the last LWT message
+MqttClientView_89=Connect
+MqttClientView_9=Publish messages
+MqttClientView_90=Press to connect to the broker
+MqttClientView_91=Disconnect
+MqttClientView_92=Press to disconnect from the broker
+MqttClientView_93=Publish
+MqttClientView_94=Topic: 
+MqttClientView_95=QoS: 
+MqttClientView_99=Payload: 
