introduce User::Update::JSON.
use Op::contract.
introdue run() do ..end.else do .. end, which i find extremely simple and good to read.