Added subclasses to Terrains

Additionally applied small changes to some other classes to allow this
to work