new approach: angle based