if you return the same object, it needs to be SGREFed