diff --git a/samples/JetBoy/AndroidManifest.xml b/samples/JetBoy/AndroidManifest.xml
index ccd3518..bba069d 100755
--- a/samples/JetBoy/AndroidManifest.xml
+++ b/samples/JetBoy/AndroidManifest.xml
@@ -1,38 +1,37 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
+	
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
 -->
 
 <!-- This file describes the code in the JetBoy package, which is
-     used by the system to determine how to start the application and
-     integrate it with the rest of the system.  -->
-     
-     
-
+	used by the system to determine how to start the application and
+	integrate it with the rest of the system.  -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="com.example.android.jetboy"
-      android:versionCode="1"
-      android:versionName="1.0.0">
-    <application android:icon="@drawable/icon" android:label="@string/app_name">
-        <activity android:name=".JetBoy"
-                  android:label="@string/app_name"
-                  android:screenOrientation="landscape">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-<uses-sdk android:minSdkVersion="3"></uses-sdk>
-</manifest> 
\ No newline at end of file
+	package="com.example.android.jetboy" android:versionCode="1"
+	android:versionName="1.0.0">
+	<application android:icon="@drawable/icon"
+		android:label="@string/app_name"
+		android:theme="@android:style/Theme.NoTitleBar">
+		<activity android:name=".JetBoy"
+			android:label="@string/app_name"
+			android:screenOrientation="landscape">
+			<intent-filter>
+				<action android:name="android.intent.action.MAIN" />
+				<category
+					android:name="android.intent.category.LAUNCHER" />
+			</intent-filter>
+		</activity>
+	</application>
+	<uses-sdk android:minSdkVersion="3"></uses-sdk>
+</manifest>
diff --git a/samples/JetBoy/res/layout/main.xml b/samples/JetBoy/res/layout/main.xml
index b5309db..ea2277f 100755
--- a/samples/JetBoy/res/layout/main.xml
+++ b/samples/JetBoy/res/layout/main.xml
@@ -1,93 +1,31 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    
-    <com.example.android.jetboy.JetBoyView
-      android:id="@+id/JetBoyView"
-      android:layout_width="fill_parent"
-      android:layout_height="fill_parent"/>
-      
-       <LinearLayout
-        android:layout_width="fill_parent" android:layout_height="wrap_content"
-        android:layout_gravity="top" android:gravity="center_horizontal"
-        android:orientation="horizontal">
-        
-        <TextView
-          android:id="@+id/text"
-		  android:text="@string/helpText"
-		  style="@style/helpText"
-		  android:visibility="invisible"
-          android:layout_width="300px"
-          android:layout_height="300px"
-          android:layout_centerInParent="true"
-          android:gravity="left"
-          android:background="#88ffffff"
-          />
-        
-        </LinearLayout>
-        
-         <LinearLayout
-        android:layout_width="fill_parent" android:layout_height="wrap_content"
-        android:layout_gravity="bottom" android:gravity="center_horizontal"
-        android:orientation="horizontal">
-        
-			<Button android:id="@+id/Button01" 
-			android:text="@string/start"
-			style="@style/ButtonText"
-			android:layout_width="wrap_content" 
-			android:layout_height="wrap_content" 
-			android:clickable="true" 
-			android:cursorVisible="true">
-			</Button>
-			
-			
-			
+	android:layout_width="fill_parent"
+	android:layout_height="fill_parent">
 
-		</LinearLayout>
-		
-         <LinearLayout
-        android:layout_width="fill_parent" android:layout_height="wrap_content"
-        android:layout_gravity="bottom" android:gravity="center_horizontal"
-        android:orientation="horizontal">
-		<Button android:id="@+id/Button02" 
-			android:text="@string/retry"
-			style="@style/ButtonText"
-			android:visibility="invisible"
-			android:layout_width="wrap_content" 
-			android:layout_height="wrap_content" 
-			android:clickable="true" 
-			android:cursorVisible="true">
-			</Button>
-			
-			<!--Button android:id="@+id/Button03" 
-			android:text="@string/restart"
-			style="@style/ButtonText"
-			android:visibility="invisible"
-			android:layout_width="wrap_content" 
-			android:layout_height="wrap_content" 
-			android:clickable="true" 
-			android:cursorVisible="true">
-			</Button-->
-			
-		</LinearLayout>
-		
-		
-		 <LinearLayout
-        android:layout_width="fill_parent" android:layout_height="wrap_content"
-        android:layout_gravity="top" android:gravity="right"
-        android:orientation="horizontal">
-        
-        <TextView
-          android:id="@+id/timer"
-		  android:text="@string/timer"
-		  style="@style/timerText"
-		  android:visibility="invisible"
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:gravity="right"
-          android:background="#000000"
-          android:textSize="24sp"/>
-        
-        </LinearLayout>
+	<com.example.android.jetboy.JetBoyView android:id="@+id/JetBoyView"
+		android:layout_width="fill_parent"
+		android:layout_height="fill_parent" />
+
+	<TextView android:id="@+id/text" android:text="@string/helpText"
+		style="@style/helpText" android:visibility="invisible" 
+		android:layout_width="300px" android:layout_height="300px"
+		android:background="#7Fffffff" android:layout_gravity="center" />
+
+	<Button android:id="@+id/Button01" android:text="@string/start"
+		style="@style/ButtonText" android:layout_width="wrap_content"
+		android:layout_height="wrap_content"
+		android:layout_gravity="center_horizontal|bottom" />
+
+	<Button android:id="@+id/Button02" android:text="@string/retry"
+		style="@style/ButtonText" android:visibility="invisible"
+		android:layout_width="wrap_content"
+		android:layout_height="wrap_content"
+		android:layout_gravity="center_horizontal|bottom" />
+
+	<TextView android:id="@+id/timer" android:text="@string/timer"
+		style="@style/timerText" android:visibility="invisible"
+		android:layout_width="wrap_content"
+		android:layout_height="wrap_content"
+		android:layout_gravity="top|right" android:background="#000000" />
 </FrameLayout>
diff --git a/samples/JetBoy/src/com/example/android/jetboy/JetBoy.java b/samples/JetBoy/src/com/example/android/jetboy/JetBoy.java
index ac12d3c..88693af 100755
--- a/samples/JetBoy/src/com/example/android/jetboy/JetBoy.java
+++ b/samples/JetBoy/src/com/example/android/jetboy/JetBoy.java
@@ -25,7 +25,6 @@
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
-import android.view.Window;
 import android.widget.Button;
 import android.widget.TextView;
 
@@ -55,12 +54,8 @@
      * @param savedInstanceState - The previous instance of this app
      */
     public void onCreate(Bundle savedInstanceState) {
-
         super.onCreate(savedInstanceState);
 
-        // turn off the window's title bar
-        requestWindowFeature(Window.FEATURE_NO_TITLE);
-
         setContentView(R.layout.main);
 
         // get handles to the JetView from XML and the JET thread.
@@ -91,9 +86,8 @@
      * @param v The object which has been clicked
      */
     public void onClick(View v) {
-
         // this is the first screen
-        if (mJetBoyThread.getGameState() == mJetBoyThread.STATE_START) {
+        if (mJetBoyThread.getGameState() == JetBoyThread.STATE_START) {
             mButton.setText("PLAY!");
             mTextView.setVisibility(View.VISIBLE);
 
@@ -102,7 +96,7 @@
 
         }
         // we have entered game play, now we about to start running
-        else if (mJetBoyThread.getGameState() == mJetBoyThread.STATE_PLAY) {
+        else if (mJetBoyThread.getGameState() == JetBoyThread.STATE_PLAY) {
             mButton.setVisibility(View.INVISIBLE);
             mTextView.setVisibility(View.INVISIBLE);
             mTimerView.setVisibility(View.VISIBLE);
diff --git a/samples/JetBoy/src/com/example/android/jetboy/JetBoyView.java b/samples/JetBoy/src/com/example/android/jetboy/JetBoyView.java
index 72142a9..c51f661 100755
--- a/samples/JetBoy/src/com/example/android/jetboy/JetBoyView.java
+++ b/samples/JetBoy/src/com/example/android/jetboy/JetBoyView.java
@@ -174,7 +174,6 @@
         // in this game 80 is used for sending asteroid
         // 82 is used as game time for 1/4 note beat.
         private final String mSendEvent = "80";
-
         private final String mTimerEvent = "82";
 
         // used to track beat for synch of mute/unmute actions
@@ -1360,38 +1359,41 @@
         holder.addCallback(this);
         
         // create thread only; it's started in surfaceCreated()
-        thread = new JetBoyThread(holder, context, new Handler() {
-
-            public void handleMessage(Message m) {
-
-                mTimerView.setText(m.getData().getString("text"));
-
-                //ok so maybe it isn't really a "lose"
-                //this bit was borrowed from lunar lander and then evolved.
-                //too close to deadline to mess with now.
-                if (m.getData().getString("STATE_LOSE") != null) {
-                    //mButtonRestart.setVisibility(View.VISIBLE);
-                    mButtonRetry.setVisibility(View.VISIBLE);
-
-                    mTimerView.setVisibility(View.INVISIBLE);
-
-                    mTextView.setVisibility(View.VISIBLE);
-
-                    Log.d(TAG, "the total was " + mHitTotal);
-
-                    if (mHitTotal >= mSuccessThreshold) {
-                        mTextView.setText(R.string.winText);
-                    } else {
-                        mTextView.setText("Sorry, You Lose! You got " + mHitTotal
-                                + ". You need 50 to win.");
+        // except if used in the layout editor.
+        if (isInEditMode() == false) {
+            thread = new JetBoyThread(holder, context, new Handler() {
+    
+                public void handleMessage(Message m) {
+    
+                    mTimerView.setText(m.getData().getString("text"));
+    
+                    //ok so maybe it isn't really a "lose"
+                    //this bit was borrowed from lunar lander and then evolved.
+                    //too close to deadline to mess with now.
+                    if (m.getData().getString("STATE_LOSE") != null) {
+                        //mButtonRestart.setVisibility(View.VISIBLE);
+                        mButtonRetry.setVisibility(View.VISIBLE);
+    
+                        mTimerView.setVisibility(View.INVISIBLE);
+    
+                        mTextView.setVisibility(View.VISIBLE);
+    
+                        Log.d(TAG, "the total was " + mHitTotal);
+    
+                        if (mHitTotal >= mSuccessThreshold) {
+                            mTextView.setText(R.string.winText);
+                        } else {
+                            mTextView.setText("Sorry, You Lose! You got " + mHitTotal
+                                    + ". You need 50 to win.");
+                        }
+    
+                        mTimerView.setText("1:12");
+                        mTextView.setHeight(20);
+    
                     }
-
-                    mTimerView.setText("1:12");
-                    mTextView.setHeight(20);
-
-                }
-            }//end handle msg
-        });
+                }//end handle msg
+            });
+        }
 
         setFocusable(true); // make sure we get key events
 
