completely rework the Angle classes