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

      if (allocations[sender].length == 0)
      {
          return true;
      }
      
      uint256 alllock_sum = 0;
      for (uint j=0; j<allocations[sender].length; j++)
      {
          if (allocations[sender][j].releaseTime >= block.timestamp)
          {
              alllock_sum = alllock_sum.add(allocations[sender][j].balance);
          }
      }
      
      uint256 can_unlock = balances[sender].sub(alllock_sum);
      
      return can_unlock >= sub_value;
  }