added GetOrAddIfNotExists method