messed a bit with carefulmove; its still buggy