work in progress - recursive method