ensure foreward declares are where they should be, also set WIN32_LEAN_AND_MEAN everywhere because on of the external headers is including windows.h