use forwardable
avoid unnecessary conversions to_sym