/// <summary>
        /// Creates a new customer
        /// </summary>
        /// <param name="id">The customer Id</param>
        /// <param name="companyName">The company name</param>
        /// <param name="contactName">The contact name</param>
        /// <returns>The customer</returns>
        public static Customer CreateNewCustomer(string id, string companyName, string contactName)
        {
            Contract.Requires<ArgumentNullException>(id != null, "id");
            Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(id), "id");
            Contract.Requires<ArgumentNullException>(companyName != null, "companyName");
            Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(companyName), "companyName");
            Contract.Requires<ArgumentNullException>(contactName != null, "contactName");
            Contract.Requires<ArgumentException>(!string.IsNullOrWhiteSpace(contactName), "contactName");

            Customer c = new Customer() { Id=id, Name=companyName, _Orders = new List<Order>() };
            c.ContactInfo = new ContactInfo { ContactName = contactName };
            return c;
        }
        /// <summary>
        /// Creates an order for a given customer
        /// </summary>
        /// <param name="customer">The customer</param>
        /// <returns>An order</returns>
        public static Order CreateOrder(Customer customer)
        {
            Contract.Requires<ArgumentNullException>(customer != null, "customer");

            Order order = new Order();
            order.Customer = customer;

            return order;
        }