separate controlers and a lot more fun