Responsive player

This completes #6

It also cleans some horrible formatting. All non-formatting changes are in the first commit of this PR.