Refactored many criterions (relates to #3)