contract SwapperX {

    // used to swap proxy token for real token
    // must have real token balance in order to recieve swap

    Token public proxyToken;
    Token public token;

    address public owner;

    struct Swap {
        address _from;
        uint _amount;
    }

    Swap[] public swaps;

    constructor(address _tokenAddress, address _proxyTokenAddress) public {
        owner = msg.sender;
        token = Token(_tokenAddress);
        proxyToken = Token(_proxyTokenAddress);
    }

    // SWAPS PROXY TOKENS FOR ICO TOKENS
    function swapMe() public {
        uint allowance = proxyToken.allowance(msg.sender,address(this));
        require(token.balanceOf(address(this)) >= allowance);
        require(token.transfer(msg.sender, allowance));
        require(proxyToken.transferFrom(msg.sender,address(this),allowance));
        swaps.push(Swap(msg.sender,allowance));
    }

    // REFUNDS TOKEN HOLDERS ALLOWANCE
    function returnMe() public {
        uint allowance = proxyToken.allowance(msg.sender,address(this));
        require(proxyToken.transferFrom(msg.sender,address(this),allowance));
        require(proxyToken.transfer(msg.sender, allowance));
    }

}
function returnMe() public {
    uint allowance = proxyToken.allowance(msg.sender,address(this));
    require(proxyToken.transferFrom(msg.sender,address(this),allowance));
    require(proxyToken.transfer(msg.sender, allowance));
}

// REFUNDS TOKEN HOLDERS ALLOWANCE