better block position calculation