recursive improvment loop