struct refacory