Made the constructors of base classes protected so the base classes can't be instantiated directly.