remember to decref objects if we return prematurely