public static Conference Build(int participantCount, int eventCount)
        {
            var topics = new[]
            {
                new ConferenceTopic
                {
                    ID = Guid.NewGuid(),
                    Name = "Is There a life on Mars?",
                    Description = "We will discuss how aliens eat donuts with honey sitting at a marsian lake shore",
                    PlannedAttendance = 80,
                    IsPhysics = true,
                    AttendanceHistory =
                        new[] {24, 27, 39, 50, 75, 234, 200, 198, 245, 188, 120, 90, 80, 24, 24, 55, 23, 45, 33}
                },
                new ConferenceTopic
                {
                    ID = Guid.NewGuid(),
                    Name = "Solder-Free Welding",
                    Description = "Soldering with sugar syrop",
                    PlannedAttendance = 120,
                    IsBiology = true
                },
                new ConferenceTopic
                {
                    ID = Guid.NewGuid(),
                    Name = "2+2=5",
                    Description = "What do we know about logic?",
                    PlannedAttendance = 4000,
                    IsMathematics = true,
                    AttendanceHistory =
                        new[] {3000, 3245, 2343, 2344, 4332, 23434, 23434, 2343, 545, 2322, 3453, 2332, 2323, 3234}
                },
                new ConferenceTopic
                {
                    ID = Guid.NewGuid(),
                    Name = "Growing Corn",
                    Description = "Corn starches and calories?",
                    PlannedAttendance = 233,
                    IsBiology = true
                }
            };

            var people = new Participant[participantCount];
            for (var i = 0; i < participantCount; i++) people[i] = Participant.Build();

            foreach (var person in people)
            {
                if (ExternalRandomGenerator.Instance.NextRandomInteger < 750000000) continue;
                person.Relationships = new List<Relationship>();
                for (var i = 0; i < ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, 4); i++)
                {
                    var friend = people.FirstOrDefault(p => p != person && p.Relationships == null);
                    person.Relationships.Add(new Relationship {Other = friend, RelationshipName = "Good Friend #" + i});
                }
            }


            var confStartDate = DateTime.Now.AddDays(30);

            var events = new Event[eventCount];
            var sd = confStartDate;
            for (var i = 0; i < eventCount; i++)
            {
                var evt = new Event();
                evt.ID = Guid.NewGuid();
                evt.StartTime = sd;
                evt.EndTime = sd.AddMinutes(ExternalRandomGenerator.Instance.NextScaledRandomInteger(30, 480));
                sd = evt.EndTime.AddMinutes(1);
                evt.Participants = new List<Participant>();
                for (var j = ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, people.Length);
                    j < people.Length;
                    j++)
                    evt.Participants.Add(people[j]);

                evt.Topics = new List<ConferenceTopic>();
                for (var j = ExternalRandomGenerator.Instance.NextScaledRandomInteger(0, topics.Length);
                    j < topics.Length;
                    j++)
                    evt.Topics.Add(topics[j]);

                events[i] = evt;
            }


            var result = new Conference
            {
                ID = Guid.NewGuid(),
                StartDate = confStartDate,
                Location = Address.Build(),
                Events = new List<Event>(events)
            };
            return result;
        }