Making abstract classes even better. will continue improvement and cleanup.
More commenting, formatting and cleanup will have to follow.