refactor some modules to prepare for stickyness