revamp position logic again, almost there