public function validate(array $input, $early_exit = false)
    {
        $result = new Result($input);
        //add custom messages that have been supplied
        foreach ($this->rules as $name => $rules) {
            $this->doValidation($result, $input, $name, $rules, $early_exit);
        }

        return $result;
    }