implementando transaction