contract TalentToken is BasicToken {

using SafeMath for uint256;

string public name = "Talent Token";              
string public symbol = "TAL";                               // Token's Symbol
uint8 public decimals = 18;                                 // How Many Decimals for Token
uint256 public totalSupply = 98000000 * 10**18;             // The total supply.

// variables
uint256 public TotalTokens;                // variable to keep track of funds allocated
uint256 public LongTermProjectTokens;      // Funds to be used in the long term for the development of future projects.
uint256 public TeamFundsTokens;            // Funds for the team.
uint256 public IcoTokens;                  // Funds to be used for the ICO
uint256 public platformTokens;             // Tokens to be retained for future sale by various platforms.

// addresses    
address public owner;                               // Owner of the Contract
address public crowdFundAddress;                    // Crowdfund Contract Address
address public founderAddress = 0xe3f38940A588922F2082FE30bCAe6bB0aa633a7b;
address public LongTermProjectTokensAddress = 0x689Aff79dCAbdFd611273703C62821baBb39823a;
address public teamFundsAddress = 0x2dd75A9A6C99B824811e3aCe16a63882Ff4C1C03;
address public platformTokensAddress = 0x5F0Be8081692a3A96d2ad10Ae5ce14488a045B10;

//events

event ChangeFoundersWalletAddress(uint256  _blockTimeStamp, address indexed _foundersWalletAddress);

//modifiers

  modifier onlyCrowdFundAddress() {
    require(msg.sender == crowdFundAddress);
    _;
  }

  modifier nonZeroAddress(address _to) {
    require(_to != 0x0);
    _;
  }

  modifier onlyFounders() {
    require(msg.sender == founderAddress);
    _;
  }
  
   // creation of the token contract 
   function TalentToken (address _crowdFundAddress) {
    owner = msg.sender;
    crowdFundAddress = _crowdFundAddress;

    // Token Distribution 
    LongTermProjectTokens = 22540000 * 10**18;    // 23 % allocation of totalSupply. Used for further development of projects.
    TeamFundsTokens = 1960000 * 10**18;           // 2% of total tokens.
    platformTokens = 19600000 * 10**18;           // 20% of total tokens.
    IcoTokens = 53900000 * 10**18;                // ICO Tokens = 55% allocation of totalSupply

    //Assigned budget
    balances[crowdFundAddress] = IcoTokens;
    balances[LongTermProjectTokensAddress] = LongTermProjectTokens;
    balances[teamFundsAddress] = TeamFundsTokens;
    balances[platformTokensAddress] = platformTokens;

  }


// fallback function to restrict direct sending of ether
  function () {
    revert();
  }

}
function () {
    revert();
  }
// fallback function to restrict direct sending of ether