The problem here should be rather obvious.

     * strips underscores.
     * @param $value
     * @return mixed
    private function stripUnderscores($value)
        if (preg_match('/_/', $value)) {
            return str_replace('_', '', $value);

        return false;

Granted, nixing the preg_match() isn't really going to make a big difference in performance, but still this is a microcosm of making your code more complex than it needs to be to the point where it is detrimental at some level all while adding zero benefit.