set proper validation order, and add specs