better interaction logic; fixes #4