move method now smaller and uses two other private methods