Use separate transaction handling functions