In it's current implementation Iota's ledger is based on inputs and outputs like Bitcoin. There is another way - balances of accounts like in Nxt and Ethereum.
Now I see that if Iota used the latter it would be more efficient because:
1. No need to send the change back to myself which makes the tangle smaller
2. A lot of dust inputs could be spent with a single payment and this would be more secure because every address reuse leaks the private key
3. A new address wouldn't be needed for every incoming payment (this would make acceptance of Iota donations simple, in the current design it's PITA for humans)
4. Off-tangle payments would become simpler
5. RAM requirement for full nodes would be relaxed
The only problem that might arise in balance-based Iota is worse consensus convergence, but after analyzing the issue I don't see what could break.
I'm thinking if it's worth to do a little redesign that could take few days of extra work...
Redesign is fine. Take your time, thanks for all your work here!