 
 import Foundation
 
-public protocol AKParameter: CustomStringConvertible {
-}
+public protocol AKParameter: CustomStringConvertible {}
+extension Double: AKParameter {}
+extension Float: AKParameter {}
+extension Int: AKParameter {}
 
-extension AKParameter {
+public struct AKOperation: AKParameter  {
+    
+    public static var input = AKOperation("(0 p)")
+    public static var trigger = AKOperation("")
+    
+    public static func parameters(i: Int) -> AKOperation {
+        return AKOperation("(\(i+1) p)")
+    }
+
     public func abs() -> AKOperation {
         return AKOperation("(\(self) abs)")
     }

    }
}

public func abs(parameter: AKParameter) -> AKOperation {
    return parameter.abs()
}

public func floor(parameter: AKParameter) -> AKOperation {
    return parameter.floor()
}

public func fract(parameter: AKParameter) -> AKOperation {
    return parameter.fract()
}

public func log(parameter: AKParameter) -> AKOperation {
    return parameter.log()
}

public func log10(parameter: AKParameter) -> AKOperation {
    return parameter.log10()
}

public func round(parameter: AKParameter) -> AKOperation {
    return parameter.round()
}


    public func midiNoteToFrequency() -> AKOperation {
        return AKOperation("(\(self) mtof)")
    }
    

    var operationString = ""
    public var description: String {
