@cahrens manual testing of problem reloading found a serious bug w/ this whole mechanism which I'm going to have to rethink. xblock is treating None as unset and going to the default "". I may have to revert the default to None and explicitly set the field for the non-defaulted ones. But, to respond to your actual comment, your replacement is not == as some component_classes won't have the attr but that will make has_markdown True whereas my code made it False.