Designing effective interaction patterns and user flows