can we do .forClass here? subclass is pretty dangerous because the type information of which subclass you have is lost. If you want to support subclasses, we need to write the class name, instantiate that, and fill it back up.