Changed the entire lib to use more elegant techniques such as the visitor pattern for constraints. Main inspiration from symfony/validator