better nested transaction support