simpler, portable & stateful delete