function transfer(address _to, uint256 _value) public returns (bool) {
        require(_value <= balances[msg.sender]);
        require(_to != address(0));

        if (lockupAmount[msg.sender] > 0) {
            if (block.timestamp <= lockupTime[msg.sender]) {
                require(balances[msg.sender].sub(lockupAmount[msg.sender]) >= _value);
            }
        }

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }