Made Controller, Renderers, and States more general

I need to get better at splitting up each change into its own commit.