I just implemented a 3-layered payment processing system with infinite logging, and a double-ledger accounting system. Perfect. However, during testing, my colleague found that typing a negative number and clicking "Add Funds" deducted money from the user's balance and put a fund-transfer ticket out (unauthorized withdrawal!) And when the balance reached zero, no visible feedback or error was giving, but still the electronic fund transfer was initiated (free money!!)<p>That taught me to process my financial side-effects with <i>explicit</i>, visible, calls; the generic dispatch, and abusing behind the scene meta-object features will make you broke.