make getOrUpdate really clean