a little recursion...I still struggle thinking this way!!!