reworked move behaviour