added a layer of indirection