changing approach to top-down, iterative