Split single app

This branch was focused on encapsulation and code cleanup on the commotion client to prepare it for easy modification by later developers.