contract PersonalCrowdsaleProxy is IPersonalCrowdsaleProxy {

    address public owner;
    ICrowdsale public target;
    

    /**
     * Deploy proxy
     *
     * @param _owner Owner of the proxy
     * @param _target Target crowdsale
     */
    function PersonalCrowdsaleProxy(address _owner, address _target) public {
        target = ICrowdsale(_target);
        owner = _owner;
    }


    /**
     * Receive contribution and forward to the target crowdsale
     * 
     * This function requires that msg.sender is not a contract. This is required because it's 
     * not possible for a contract to specify a gas amount when calling the (internal) send() 
     * function. Solidity imposes a maximum amount of gas (2300 gas at the time of writing)
     */
    function () public payable {
        target.contributeFor.value(msg.value)(owner);
    }
}
/**
 * PersonalCrowdsaleProxy
 *
 * #created 22/11/2017
 * #author Frank Bonnet
 */
function () public payable {
    target.contributeFor.value(msg.value)(owner);
}

/**
 * Receive contribution and forward to the target crowdsale
 * 
 * This function requires that msg.sender is not a contract. This is required because it's 
 * not possible for a contract to specify a gas amount when calling the (internal) send() 
 * function. Solidity imposes a maximum amount of gas (2300 gas at the time of writing)
 */