Why does the base class need to be `abstract`?