         self.init(latitudePart: latitudePart, longitudePart: longitudePart)
     }
     
-    init(quadKey: QuadKey) {
+    public init(quadKey: QuadKey) {
         self.init(quadKey: quadKey, precision: QuadKeyPrecision.max)
     }
 }
 
 public struct QuadKeyBounds {
-    let min: QuadKey
-    let max: QuadKey
-    
-    init(min: QuadKey, max: QuadKey) {
+    public let min: QuadKey
+    public let max: QuadKey
+    
+    public init(min: QuadKey, max: QuadKey) {
         self.min = min
         self.max = max
     }
     
-    init(quadKey: QuadKey, precision: QuadKeyPrecision) {
+    public init(quadKey: QuadKey, precision: QuadKeyPrecision) {
         let min = quadKey << QuadKey(64 - 2*precision)
         let mask = precision >= 32 ? QuadKey(0) : QuadKey.max >> QuadKey(2*precision)
         let max = min | mask

    static let unsignedConversionConstant: UInt64 = UInt64(bitPattern: Int64.min)
    static let signedConversionConstant: Int64 = Int64.min
    
    init(latitude: QuadKeyDegrees, longitude: QuadKeyDegrees) {
        self.init(latitudePart: QuadKeyPart(latitude: latitude), longitudePart: QuadKeyPart(longitude: longitude), precision: QuadKeyPrecision.max)
    }

    init(latitude: QuadKeyDegrees, longitude: QuadKeyDegrees, precision: QuadKeyPrecision) {
        self.init(latitudePart: QuadKeyPart(latitude: latitude, precision: precision), longitudePart: QuadKeyPart(longitude: longitude, precision: precision), precision: precision)
    }
    
    init(latitudePart: QuadKeyPart, longitudePart: QuadKeyPart, precision: QuadKeyPrecision) {
        var quadKey: QuadKey = 0
        let max: QuadKey = QuadKey(precision) - 1
        let quadKeyLongitudePart = QuadKey(longitudePart)

}

public extension Int64 {
    public init(quadKey: QuadKey) {
        if quadKey < QuadKey.unsignedConversionConstant {
            self.init(Int64(quadKey) + QuadKey.signedConversionConstant)
        } else {
