Responsibility of boilerplate work is transfered to its own class (Transaction). UT for watch are temporarily commented out as they are not supported yet