Updated

Included Paul's feedback
Broke the UI into separate files