restore super type functionality for structs (refactored)