function canSubAllocation(address sender, uint256 sub_value) private constant returns(bool) {
    if (sub_value == 0) {
      return false;
    }

    if (balances[sender] < sub_value) {
      return false;
    }

    uint256 alllock_sum = 0;
    for (uint j = 0; j < allocations[sender].length; j++) {
      if (allocations[sender][j].time >= block.timestamp) {
        alllock_sum = alllock_sum.add(allocations[sender][j].balance);
      }
    }

    uint256 can_unlock = balances[sender].sub(alllock_sum);

    return can_unlock >= sub_value;
  }