abstracted generators... causes infinite loop somehow.