   }
 }
 
-public enum NewChordSeventhType: ChordDescription {
+public enum NewChordSeventhType: ChordPart {
   case major // triad and seventh note
   case dominant // triad and halfstep down seventh note
 
+  public var interval: Interval {
+    switch self {
+    case .dominant:
+      return .m7
+    case .major:
+      return .M7
+    }
+  }
+
   public var notation: String {
     switch self {
     case .major: return "maj7"

public struct NewChord: ChordDescription {
  public private(set) var key: NoteType
  public private(set) var type: NewChordType
  public private(set) var inversion: Int

  public init(key: NoteType, type: NewChordType, inversion: Int = 0) {
    self.key = key
    self.type = type
    self.inversion = inversion
  }

  public var notation: String {

  }

  public var intervals: [Interval] {
    var parts: [ChordPart?] = [sixth == nil ? third : nil, suspended, fifth, sixth, seventh]
    parts += extensions?.sorted(by: { $0.type.rawValue < $1.type.rawValue }).map({ $0 as? ChordPart }) ?? []
    return [.unison] + parts.flatMap({ $0?.interval })
  }

  public var notation: String {
