support criteria recursively~~~