transaction and commit are functional