remake loop, loopWithLog, loopIO
update tests