i'd use 2 implementations; the one for get: returns an EMPTY if == null