make parse() and create_parser() clearer about return values