Merged ui.py into launch.py; fixes #49.