decoupled parser, added args
unstable