better calculation