use recursion.
under development.