can handle attributes with empty values