Split up classes into files and fixed private abstract classes causing inconsistency.