             } else {
                 print("Tried to assign a value to the undeclared variable \(property)")
                 throw ExecErrors.AssignUndeclaredVariableError
+            }
+        } else if cmd.containsString("(") {
+            var components = cmd.componentsSeparatedByString("(")
+            let methodName = components[0]
+            if methods[methodName] != nil {
+                components.removeFirst()
+                var arg = components.joinWithSeparator("(")
+                let range = arg.rangeOfString(")", options: .BackwardsSearch)
+                if range == nil {
+                    print("Missing closing bracket ')'")
+                    throw ExecErrors.SyntaxError
+                }
+                arg.removeRange(range!.startIndex..<arg.endIndex)
+                return try methods[methodName]!(arg)
             }
         }
         return null

        properties["theme.description"] = null
        properties["theme.author"] = null
        properties["theme.version"] = null
        // MARK: parse
        var commands: [(Int, String)] = []
        for line in 0..<lines.count {

        return cmd
    }
    
    func printString(stringLiteral: String) throws -> String? {
        print("[BBTC] [\(getThemeID())] \(try execIfNeeds(stringLiteral)!)")
        return nil
    }
    
    func fileGetContents(stringLiteral: String) throws -> String? {
        let argument = try execIfNeeds(stringLiteral)!
        return try FileSaveHelper(fileName: argument, fileExtension: argument.containsString(".") ? .NONE : .PNG, subDirectory: dir).getContentsOfFile()
    }
    
    func getThemeID() -> String {
        return properties["theme.id"]! == nil ? "Undefined" : properties["theme.id"]!!
    }
    
    enum ExecErrors: ErrorType {
        case AssignUndeclaredVariableError
        case CallUndeclaredMethodError
        case SyntaxError
    }
}