refactor, start on parser