public void PopulateContractDetail(Contract contract)
    {
        ContractName.text = contract.Name;

        WorkRequiredPRG.text = contract.SkillPointsRemaining[Skill.Programming].Level.ToString();
        WorkRequiredUIX.text = contract.SkillPointsRemaining[Skill.UserInterfaces].Level.ToString();
        WorkRequiredDBS.text = contract.SkillPointsRemaining[Skill.Databases].Level.ToString();
        WorkRequiredNTW.text = contract.SkillPointsRemaining[Skill.Networking].Level.ToString();
        WorkRequiredWEB.text = contract.SkillPointsRemaining[Skill.WebDevelopment].Level.ToString();

        ContractPay.text  = contract.Payment.ToString();
        ContractDays.text = contract.DaysToComplete.ToString();

        NegotiateButton.onClick.RemoveAllListeners();
        AcceptButton.onClick.RemoveAllListeners();

        if (!contract.Negotiated)
        {
            NegotiateButton.onClick.AddListener(() =>
            {
                int new_p, new_d;
                if (!int.TryParse(ContractPay.text, out new_p))
                {
                    new_p = contract.Payment;
                }
                if (!int.TryParse(ContractDays.text, out new_d))
                {
                    new_d = contract.DaysToComplete;
                }
                TryNegotiate(contract, new_p, new_d);
                PopulateContractDetail(contract);
            });
        }
        else
        {
            NegotiateButton.GetComponentInChildren <Text>().text = contract.SuccessfulNegotiation
                ? "Success" : "Fail";
            NegotiateButton.image.color = contract.SuccessfulNegotiation
                ? Color.green : Color.red;
            NegotiateButton.interactable = false;
        }

        AcceptButton.onClick.AddListener(() =>
        {
            contract.AcceptContract();
            CloseContractForm();
        });
    }