function writeMessage(string argMsg, string argTitle, string argAuthorName, string argLink, string argMeta) public payable {
        require(block.timestamp >= expirationTime);
        require(msg.value >= price);
        Message memory newMessage = Message({
            msg : argMsg,
            value : msg.value,
            sourceAddr : msg.sender,
            authorName : argAuthorName,
            time : block.timestamp,
            blockNumber : block.number,
            metadata : argMeta,
            link : argLink,
            title: argTitle
        });
        messages.push(newMessage);
        address thisContract = this;
        root.transfer(thisContract.balance);
        emit MessageEthernalized(messages.length - 1);
        price = (price * multNumerator) / multDenominator;
        expirationTime = block.timestamp + expirationSeconds;
}