first attempt at an actual compiler