added value_type utility