diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/Config.java b/com.amd.aparapi/src/java/com/amd/aparapi/Config.java
index e21829d6a6eb0b1941cae0f99d98ac4e0f62ab32..e11ed0a78c88b4acb9881ffc109ac0110b6ba74d 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/Config.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/Config.java
@@ -180,13 +180,15 @@ class Config{
       void showAndTell(String message, Instruction _start, Instruction _instruction);
    }
 
+   static final boolean enableInstructionDecodeViewer = Boolean.getBoolean(propPkgName + ".enableInstructionDecodeViewer");
    static String instructionListenerClassName = System.getProperty(propPkgName + ".instructionListenerClass");
 
    static public InstructionListener instructionListener = null;
 
    static {
-      System.out.println("junk!");
-
+      if (enableInstructionDecodeViewer && (instructionListenerClassName==null || instructionListenerClassName.equals(""))  ){
+         instructionListenerClassName = InstructionViewer.class.getName();
+      }
       if (instructionListenerClassName != null && !instructionListenerClassName.equals("")) {
          try {
             Class<?> instructionListenerClass = Class.forName(instructionListenerClassName);
diff --git a/com.amd.aparapi/src/java/com/amd/aparapi/KernelRunner.java b/com.amd.aparapi/src/java/com/amd/aparapi/KernelRunner.java
index fec5eee8499c5595dc8f333815e44d63c8392743..49142f71216930fcd67afa1ea713d9f3c40e2a01 100644
--- a/com.amd.aparapi/src/java/com/amd/aparapi/KernelRunner.java
+++ b/com.amd.aparapi/src/java/com/amd/aparapi/KernelRunner.java
@@ -1362,8 +1362,9 @@ class KernelRunner{
                int jniFlags = 0;
                if (openCLDevice == null) {
                   if (kernel.getExecutionMode().equals(EXECUTION_MODE.GPU)) {
-                     // We just treat as before by getting first GPU device
-                     openCLDevice = (OpenCLDevice) OpenCLDevice.firstGPU();
+                     // We used to treat as before by getting first GPU device
+                     // now we get the best GPU
+                     openCLDevice = (OpenCLDevice) OpenCLDevice.best();
                      jniFlags |= JNI_FLAG_USE_GPU; // this flag might be redundant now. 
                   } else {
                      // We fetch the first CPU device