movement refactor, events