now implement TAP with a slightly better condoned RWS monad...