introduce KeyValueContainer