compiles, still missing quite a bit though