diff --git a/button.go b/button.go
index 39c2da1..ffbdc6d 100644
--- a/button.go
+++ b/button.go
@@ -1,5 +1,5 @@
 // 12 february 2014
-package main
+package ui
 
 import (
 	"sync"
diff --git a/callbacks_unix.go b/callbacks_unix.go
index cb3b2f6..9a0ed99 100644
--- a/callbacks_unix.go
+++ b/callbacks_unix.go
@@ -1,7 +1,7 @@
 // +build !windows,!darwin,!plan9
 
 // 16 february 2014
-package main
+package ui
 
 import (
 	"unsafe"
diff --git a/checkbox.go b/checkbox.go
index 7b5b460..c57059d 100644
--- a/checkbox.go
+++ b/checkbox.go
@@ -1,5 +1,5 @@
 // 13 february 2014
-package main
+package ui
 
 import (
 	"sync"
diff --git a/combobox.go b/combobox.go
index 5304fd5..2f70fa8 100644
--- a/combobox.go
+++ b/combobox.go
@@ -1,5 +1,5 @@
 // 14 february 2014
-package main
+package ui
 
 import (
 	"sync"
diff --git a/common_windows.go b/common_windows.go
index 7d9eda0..029bef3 100644
--- a/common_windows.go
+++ b/common_windows.go
@@ -1,5 +1,5 @@
 // 7 february 2014
-package main
+package ui
 
 import (
 	"syscall"
diff --git a/control.go b/control.go
index bfd0bb9..16f94bb 100644
--- a/control.go
+++ b/control.go
@@ -1,5 +1,5 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	// ...
diff --git a/controls_windows.go b/controls_windows.go
index 4593e2b..6ea0d21 100644
--- a/controls_windows.go
+++ b/controls_windows.go
@@ -1,5 +1,5 @@
 // 9 february 2014
-package main
+package ui
 
 import (
 //	"syscall"
diff --git a/dialog.go b/dialog.go
index d152e78..7b4fbeb 100644
--- a/dialog.go
+++ b/dialog.go
@@ -1,5 +1,5 @@
 // 7 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/dialog_unix.go b/dialog_unix.go
index 83e5f29..4676cc4 100644
--- a/dialog_unix.go
+++ b/dialog_unix.go
@@ -1,7 +1,7 @@
 // +build !windows,!darwin,!plan9
 
 // 7 february 2014
-package main
+package ui
 
 import (
 	"unsafe"
diff --git a/dialog_windows.go b/dialog_windows.go
index 292f801..e189082 100644
--- a/dialog_windows.go
+++ b/dialog_windows.go
@@ -1,5 +1,5 @@
 // 7 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/gtkcalls_unix.go b/gtkcalls_unix.go
index 62802e1..95605e7 100644
--- a/gtkcalls_unix.go
+++ b/gtkcalls_unix.go
@@ -2,7 +2,7 @@
 // TODO is there a way to simplify the above? :/
 
 // 16 february 2014
-package main
+package ui
 
 import (
 	"unsafe"
diff --git a/gtkcasts_unix.go b/gtkcasts_unix.go
index 8d930f6..5d88e1e 100644
--- a/gtkcasts_unix.go
+++ b/gtkcasts_unix.go
@@ -1,7 +1,7 @@
 // +build !windows,!darwin,!plan9
 
 // 17 february 2014
-package main
+package ui
 
 import (
 	"unsafe"
diff --git a/init.go b/init.go
index f1365fc..1f6d542 100644
--- a/init.go
+++ b/init.go
@@ -1,5 +1,5 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	"os"
diff --git a/init_windows.go b/init_windows.go
index 0036047..9d22b34 100644
--- a/init_windows.go
+++ b/init_windows.go
@@ -1,5 +1,5 @@
 // 8 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/label.go b/label.go
index 51902f5..9dd7ac5 100644
--- a/label.go
+++ b/label.go
@@ -1,5 +1,5 @@
 // 14 february 2014
-package main
+package ui
 
 import (
 	"sync"
diff --git a/lineedit.go b/lineedit.go
index 461f360..ab05085 100644
--- a/lineedit.go
+++ b/lineedit.go
@@ -1,5 +1,5 @@
 // 14 february 2014
-package main
+package ui
 
 import (
 	"sync"
diff --git a/listbox.go b/listbox.go
index feb00bd..9f87ad6 100644
--- a/listbox.go
+++ b/listbox.go
@@ -1,5 +1,5 @@
 // 14 february 2014
-package main
+package ui
 
 import (
 	"sync"
diff --git a/listbox_unix.go b/listbox_unix.go
index d59aa61..10f2680 100644
--- a/listbox_unix.go
+++ b/listbox_unix.go
@@ -1,7 +1,7 @@
 // +build !windows,!darwin,!plan9
 
 // 17 february 2014
-package main
+package ui
 
 import (
 	"unsafe"
diff --git a/main.go b/main_test.go
similarity index 95%
rename from main.go
rename to main_test.go
index 10add2d..229fe34 100644
--- a/main.go
+++ b/main_test.go
@@ -1,11 +1,12 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	"fmt"
+	"testing"
 )
 
-func main() {
+func TestMain(t *testing.T) {
 	w := NewWindow("Main Window", 320, 240)
 	w.Closing = Event()
 	b := NewButton("Click Me")
@@ -67,5 +68,6 @@ mainloop:
 		}
 	}
 	w.Hide()
+println("exited loop")
 }
 
diff --git a/menus_windows.go b/menus_windows.go
index d9a5379..02ad374 100644
--- a/menus_windows.go
+++ b/menus_windows.go
@@ -1,5 +1,5 @@
 // 10 february 2014
-package main
+package ui
 
 import (
 //	"syscall"
diff --git a/stack.go b/stack.go
index bb43d24..46b8878 100644
--- a/stack.go
+++ b/stack.go
@@ -1,5 +1,5 @@
 // 13 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/stdwndclass_windows.go b/stdwndclass_windows.go
index 3c9861f..17784d0 100644
--- a/stdwndclass_windows.go
+++ b/stdwndclass_windows.go
@@ -1,5 +1,5 @@
 // 8 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/sysdata.go b/sysdata.go
index 5a3f0ab..adef516 100644
--- a/sysdata.go
+++ b/sysdata.go
@@ -1,5 +1,5 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	"runtime"
diff --git a/sysdata_unix.go b/sysdata_unix.go
index 3250b6d..650acc6 100644
--- a/sysdata_unix.go
+++ b/sysdata_unix.go
@@ -1,7 +1,7 @@
 // +build !windows,!darwin,!plan9
 
 // 16 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/sysdata_windows.go b/sysdata_windows.go
index 326db06..f311187 100644
--- a/sysdata_windows.go
+++ b/sysdata_windows.go
@@ -1,5 +1,5 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/uitask_unix.go b/uitask_unix.go
index d3dd77a..fad1503 100644
--- a/uitask_unix.go
+++ b/uitask_unix.go
@@ -1,7 +1,7 @@
 // +build !windows,!darwin,!plan9
 
 // 16 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/uitask_windows.go b/uitask_windows.go
index 658d8c3..a9ed9f4 100644
--- a/uitask_windows.go
+++ b/uitask_windows.go
@@ -1,5 +1,5 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	"syscall"
diff --git a/unmigrated/cursors_windows.go b/unmigrated/cursors_windows.go
index 78fb1f8..3a45391 100644
--- a/unmigrated/cursors_windows.go
+++ b/unmigrated/cursors_windows.go
@@ -1,5 +1,5 @@
 // 8 february 2014
-package main
+package ui
 
 import (
 //	"syscall"
diff --git a/unmigrated/icons_windows.go b/unmigrated/icons_windows.go
index c28f158..f45291a 100644
--- a/unmigrated/icons_windows.go
+++ b/unmigrated/icons_windows.go
@@ -1,5 +1,5 @@
 // 8 february 2014
-package main
+package ui
 
 import (
 //	"syscall"
diff --git a/unmigrated/main_windows.go b/unmigrated/main_windows.go
index 3fcbdd2..afe6d3c 100644
--- a/unmigrated/main_windows.go
+++ b/unmigrated/main_windows.go
@@ -1,7 +1,7 @@
 // +build ignore
 
 // 7 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/unmigrated/messages_windows.go b/unmigrated/messages_windows.go
index e74b9fa..b021ae9 100644
--- a/unmigrated/messages_windows.go
+++ b/unmigrated/messages_windows.go
@@ -1,5 +1,5 @@
 // 9 february 2014
-package main
+package ui
 
 import (
 //	"syscall"
diff --git a/unmigrated/stdfont_windows.go b/unmigrated/stdfont_windows.go
index 8dcba9f..1ba086c 100644
--- a/unmigrated/stdfont_windows.go
+++ b/unmigrated/stdfont_windows.go
@@ -1,5 +1,5 @@
 // 10 february 2014
-package main
+package ui
 
 import (
 //	"syscall"
diff --git a/window.go b/window.go
index 3396407..6a0e6ea 100644
--- a/window.go
+++ b/window.go
@@ -1,5 +1,5 @@
 // 11 february 2014
-package main
+package ui
 
 import (
 	"fmt"
diff --git a/windows_windows.go b/windows_windows.go
index e925334..c5d4662 100644
--- a/windows_windows.go
+++ b/windows_windows.go
@@ -1,5 +1,5 @@
 // 8 february 2014
-package main
+package ui
 
 import (
 //	"syscall"