On separation of platform-independent particles in user interfaces
design patterns : elements of reusable object - oriented software .