 
 extension SemanticVersion: CustomStringConvertible {
     
-    var description: String {
+    public var description: String {
         return "\(major).\(minor).\(patch)"
     }
     


extension SemanticVersion: Comparable {}

func == (lhs: SemanticVersion, rhs: SemanticVersion) -> Bool {
    return lhs.major == rhs.major && lhs.minor == rhs.minor && lhs.patch == rhs.patch
}

func < (lhs: SemanticVersion, rhs: SemanticVersion) -> Bool {
    if lhs.major < rhs.major && lhs.minor <= rhs.minor && lhs.patch <= rhs.patch {
        return true
    }


import Foundation

public struct SemanticVersion {
    public var major: Int
    public var minor: Int
    public var patch: Int
    
    public init?(_ versionString: String) {
        let components = versionString.componentsSeparatedByString(".")
        guard let majorString = components.first, major = Int(majorString) else { return nil }
        self.major = major
