compiler rewritten from scratch, part 1