Some time ago I was thinking about removing the state at all, and relying on the payment state & shipping state + a separate model for the Status... (like in Magento)