added value_type and size_type