Add a recursive search function
Reorganisation