function getCurrentFgcCap() public constant returns (uint) {
    if (block.timestamp < startsAt) 
      return maxEthPerAddress;

    uint timeSinceStart = block.timestamp.sub(startsAt);
    uint currentPeriod = timeSinceStart.div(TIME_PERIOD_IN_SEC).add(1);

    if (currentPeriod < 2) {
      return 5000 * 10**token.decimals();
    }
    if (currentPeriod > 2 && currentPeriod < 5) {
      return 1000 * 10**token.decimals();
    }
    if (currentPeriod > 4 && currentPeriod < 6) {
      return 500 * 10**token.decimals();
    }
    if (currentPeriod > 5 && currentPeriod < 9) {
      return 200 * 10**token.decimals();
    }
    if (currentPeriod > 8 && currentPeriod < 11) {
      return 100 * 10**token.decimals();
    }

    return maxEthPerAddress;
  }