making all AtomicTypeReference instantiations go through constructor func