Added support for more weird cases and abstract classes