             Riffle.debug("INVOCATION: \(endpoint)")
             
             do {
-                try fn(invocation.arguments)
+                try fn(extractDetails(endpoint, invocation.arguments))
             } catch CuminError.InvalidTypes(let expected, let recieved) {
                 Riffle.warn(": cumin unable to convert: expected \(expected) but received \"\(recieved)\"[\(recieved.dynamicType)] for function \(fn) registered at endpoint \(endpoint)")
             } catch {

}


func extractDetails(endpoint: String, args: [AnyObject]) -> [AnyObject] {
    if !endpoint.containsString("#details") {
        return args
    }

            Riffle.debug("INVOCATION: \(endpoint)")
            
            do {
                result = try fn(extractDetails(endpoint, invocation.arguments))
                
                if let r = result as? AnyObject {
                    let serialized = try serialize(r)
