scale recursive