Renamed key to field in various places
Improved code coverage
Let _addElement and _removeElement throw InvalidArgumentExceptions

Updated the relevant tests