demand monitors tested and debugged; gave up on detecting cycles, unfortunately, so these are less efficient than I was hoping to achieve