move things around, add most of the parser