Cleanup code by using forward declarations and other methods of avoiding unnecesary header includes