new UI interaction logic. Much cleaner now