What design patterns do you rely on most frequently when building complex, state-driven user interfaces?