Renamed project to avoid namespace conflict
Major refactor

It was getting pretty hairy and I was making things look like each other
that shouldn't (inheritance why).  Making it a lot more readable as well