A lot of changes in SetPosition (todo recheck everything)