I'm trying to write a contract that has a string that can be modified/updated by the owner later on.  I tested it in Remix and it works perfectly. But when I deploy it to my private blockchain, I get errors. Any ideas? Or is there at least a reasonable way to debug the code? These errors seem to be useless!

    pragma solidity ^0.4.13;

    contract c5 {
        uint currentVersion;
        string command;
        address owner;

        //Constructor is automatically executed upon creation:
        function c5(){
                currentVersion = 1;
                command = "test1";
                owner = msg.sender;
        }

        function update(uint input){
                if(msg.sender != owner) return;
                currentVersion = input;
        }

        function query() constant returns (string){
                return command;
        }

        function version() constant returns (uint){
                return currentVersion;
        }
    }


This is the error I get in the geth console:

    > c5.query()
    "test1"
    > c5.version()
    1
    > c5.update("4")
    Error: invalid address
    at web3.js:3879:15
    at web3.js:3705:20
    at web3.js:4948:28
    at map (<native code>)
    at web3.js:4947:12
    at web3.js:4973:18
    at web3.js:4998:23
    at web3.js:4061:16
    at apply (<native code>)
    at web3.js:4147:16

Are these strings indeed editable? or do I need to submit a new contract with the new string and direct queries to it via an updated address via DELEGATECALL:

https://ethereum.stackexchange.com/questions/2404/upgradeable-smart-contracts

Thanks in advance for any ideas!