Activity Class Hierarchy

Funny, just this afternoon I was reading an article about how class hierarchies prevent code from being easily changed. Note that by merging this, the code will probably break a lot. Pay attention to what the Travis CI build info says.