improve value_type