fallback to defaultAppearance if appearance missing