basic depth-first traversing ok!