update parser, use q-io