Make porting to other platforms easier. Move platform specific files into their own /Platform subfolder. Reduce use of CM_PLATFORM where possible Split class into different files per-platform where possible GLRenderer - Win32Window - Win32Prerequisites - Win32Context - Win32GLSupport - GLPRerequisities - different includes are added depending on platform Utility - Timer - DynLibManager (currently has everything in one file, need to split it up) - FileSystem - has some OS specific functionality Core - Cursor - Also move to Utility? - WindowEventUtilities - Rename the class, also split it into separate files per platform - Application::loadPlugin - uses different extensions based on platform. Move platform specific functionality outside? Search for all occurencess of CM_PLATFORM - Although in all other cases use of CM_PLATFORM can be removed, or is justified