more work implementing Parser