refactor move to use duration, ready for animation