better parse_amount()