require stm >=2.3 since stm-2.2.0.1 does not provide modifyTVar