move ui interaction to sub module