First cut at a common PanelSpecType class