Recursive stuff it works and it makes sense