Added back program tests and refactored validation rules for all