add snap behavior, and finish transaction