protected function is_sub_class_of($class_name, $should, $allow_abstract = false){
        if( class_exists($class_name) ){
            // Check if this is subclass
            $refl = new \ReflectionClass($class_name);
            return ( $allow_abstract || !$refl->isAbstract() ) && $refl->isSubclassOf($should);
        }
        return false;
    }