it almost compiles now but warnings are treated as errors (some functions still aren't defined)