Creating adaptive and responsive interfaces