         /// augmented Sixth interval.
         public static let augmented: EnumKind = .augmentedSixth
         
-        public override class var members: [EnumKind] {
-            return [diminished, minor, major, augmented]
-        }
+        public override class var members: [EnumKind] { return imperfectMembers }
         
         public override class func kind(forPitchSpellingDyad pitchSpellingDyad: PitchSpellingDyad)
             -> EnumKind

        /// augmented Fifth interval.
        public static let augmented: EnumKind = .augmentedFifth
        
        
        public override class var members: [EnumKind] {
            return [diminished, perfect, augmented]
        }
        
        public override class func kind(forPitchSpellingDyad pitchSpellingDyad: PitchSpellingDyad)
            -> EnumKind


private protocol PerfectIntervalQuatlityType: IntervalQualityType {
    static var perfect: IntervalQuality.EnumKind { get }
    static var perfectMembers: [IntervalQuality.EnumKind] { get }
}

extension PerfectIntervalQuatlityType {
    static var perfectMembers: [IntervalQuality.EnumKind] {
        return [perfect, diminished, augmented]
    }
}

private protocol ImperfectIntervalQualityType: IntervalQualityType {
    static var major: IntervalQuality.EnumKind { get }
    static var minor: IntervalQuality.EnumKind { get }
    static var imperfectMembers: [IntervalQuality.EnumKind] { get }
}

extension ImperfectIntervalQualityType {
    static var imperfectMembers: [IntervalQuality.EnumKind] {
        return [major, minor, diminished, augmented]
    }
}

/**
 Quality of Interval between two `SpelledPitch` objects.
