function canTransfer(address _from, uint256 _value) internal view returns (bool success) {
        require(finaliseTime != 0);
        uint256 index;

        if (addressType[_from] == 0  || addressType[_from] == 5) {
            return true;
        }
        
        if (addressType[_from] == 3 || addressType[_from] == 4) {
            index = safeSub(now, finaliseTime) / 60 days;
            if ( index >= 2) {
                index = 2;
            }
            require(safeSub(balances[_from], _value) >= releaseForSeed[_from][index]);
        } else if (addressType[_from] == 1 || addressType[_from] == 2) {
            index = safeSub(now, finaliseTime) / 180 days;
            if (index >= 4) {
                index = 4;
            }
            require(safeSub(balances[_from], _value) >= releaseForTeamAndAdvisor[_from][index]);
        }
        return true;
    }