             e = new Error('Could not parse input')
             callback(e, null)
 
+    # our asyncLoop
+    # may be we will need it sometime
+    asyncLoop: (iterations, func, callback) ->
+        index = 0
+        done = false
+        cycle =
+            next: ->
+                if done
+                    return
+                if index < iterations
+                    index++
+                    func cycle
+                else
+                    done = true
+                    callback()
+            iteration: ->
+                index - 1
+            break: ->
+                done = true
+                callback()
+        cycle.next()
+        cycle
+
+    # Construct function buttons from abi
+    constructFunctions: (@contractABI, callback) ->
+        for contractFunction in contractABI
+            if contractFunction.type = 'function'
+                @createChilds contractFunction, (error, childInputs) ->
+                    if !error
+                        callback(null, [contractFunction.name, childInputs])
+                    else
+                        callback(null, [null, null])
+
+    createChilds: (contractFunction, callback) ->
+        reactElements = []
+        i = 0
+        if contractFunction.inputs.length > 0
+            while i < contractFunction.inputs.length
+                reactElements[i] = [contractFunction.inputs[i].type, contractFunction.inputs[i].name]
+                i++
+        callback(null, reactElements)
+
+    # Construct react child inputs
     create: (@abi, @code, @constructVars, @contractName) ->
-        console.log 'Creating contract...'
         that = this
         # hide create button
         @prepareEnv @contractName, (err, callback) ->

                        console.log 'address: ' + myContract.address
                        document.getElementById(that.contractName + '_address').innerText = myContract.address
                        document.getElementById(that.contractName + '_stat').innerText = 'Mined!'
                        # Create call button for every function
                        for contractFunction in that.abi
                            if contractFunction.type == 'function'
                                callButton = React.createClass(
                                    displayName: 'callButton'
                                    _handleSubmit: ->
                                        console.log 'Handling call submit'
                                        # Call contract calling function
                                        that.call(myContract, this.refs)
                                    render: ->
                                        React.createElement('form', { onSubmit: this._handleSubmit },
                                        React.createElement('input', {type: 'submit', value: contractFunction.name, ref: contractFunction.name}, null, null))
                                    )
                                ReactDOM.render React.createElement(callButton, null), document.getElementById(that.contractName + '_call')
                    else if !contract.address
                        document.getElementById(that.contractName + '_stat').innerText = "Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined..."
                        console.log "Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined..."

                # TODO: Handle Compilation asynchronously and handle errors
                ###
                that.compiled = web3.eth.compile.solidity(source);
                # Clean View before creating
                that.atomSolidityView.destroyCompiled()
                # Create inpus for every contract
