final protected function camelize($str)
    {
        if (strstr($str, '_') === false) {
            return $str;
        }
        return lcfirst(implode('', array_map('ucfirst', explode('_', $str))));
    }