Refactored to remove singleton.
Added find-or-create.