         }
     }
     
+    var _parallelPosition: CGFloat {
+        get {
+            switch self.orientation {
+            case .horizontal:
+                return super.frame.origin.x
+            case .vertical:
+                return super.frame.origin.y
+            }
+        }
+        set(newParallelPosition) {
+            switch self.orientation {
+            case .horizontal:
+                return super.frame.origin.x = newParallelPosition
+            case .vertical:
+                return super.frame.origin.y = newParallelPosition
+            }
+        }
+    }
+    
+    var _orthogonalPosition: CGFloat {
+        get {
+            switch self.orientation {
+            case .horizontal:
+                return super.frame.origin.y
+            case .vertical:
+                return super.frame.origin.x
+            }
+        }
+        set(newOrthogonalPosition) {
+            switch self.orientation {
+            case .horizontal:
+                return super.frame.origin.y = newOrthogonalPosition
+            case .vertical:
+                return super.frame.origin.x = newOrthogonalPosition
+            }
+        }
+    }
+    
     var _length: CGFloat {
         get {
             switch self.orientation {
             case .horizontal:
-                return self.frame.width
-            case .vertical:
-                return self.frame.height
+                return super.frame.width
+            case .vertical:
+                return super.frame.height
             }
         }
         set(newLength) {
             switch self.orientation {
             case .horizontal:
-                self.frame.size.width = newLength
-            case .vertical:
-                self.frame.size.height = newLength
+                super.frame.size.width = newLength
+            case .vertical:
+                super.frame.size.height = newLength
             }
         }
     }

        set(newLineWidth) {
            self._lineWidth = newLineWidth
        }
            
    }
}

// MARK: Class Declaration
public class LineLayer: CALayer {
    fileprivate var __orientation: LineLayer.Orientation = .horizontal
}


// MARK: Overrides
public extension LineLayer {
    public override var frame: CGRect {
        get {
            return self._frame
        }
        set(newFrame) {
            self._frame = newFrame
        }
    }
}


// MARK: // Private
// MARK: Computed Properties
private extension LineLayer {
    var _orientation: LineLayer.Orientation {

import UIKit


// MARK: - // Public
// MARK: - LineLayerConfiguration
// MARK: Struct Declaration
public struct LineLayerConfiguration {
    let parallelPosition: CGFloat = 0
    let orthogonalPosition: CGFloat = 0
    let orientation: LineLayer.Orientation = .horizontal
    let lineWidth: CGFloat = 1
    let length: CGFloat = 0
}


// MARK: - LineLayer
// MARK: Interface
public extension LineLayer {
    // Enum Orientation
    public enum Orientation {
        case horizontal
        case vertical
    }
    
    // ReadWrite
    public var parallelPosition: CGFloat {
        get {
            return self._parallelPosition
        }
        set(newParallelPosition) {
            self._parallelPosition = newParallelPosition
        }
    }
    
    public var orthogonalPosition: CGFloat {
        get {
            return self._orthogonalPosition
        }
        set(newOrthogonalPosition) {
            self._orthogonalPosition = newOrthogonalPosition
        }
    }
    
    public var orientation: LineLayer.Orientation {
        get {
            return self._orientation
