Split classes into one per file

and optimized header includes