changed parser to catch return error strings instead of throwing them for better control flow