exploring better balanced
fully recursive balance()