Trying to combine modules down in a new branch...
New state system, better modularity, etc.