public void LazyLoad(Action done, params string[] e)
        {
            int stage = 1;

            try
            {
                stage = 2;
                var w = new WorkPool();
                stage = 3;
                foreach (var v0 in e)
                {
                    var v1 = v0;

                    w.Add(
                        delegate
                        {
                            this.AddWorker().Name = v1;
                        }
                    );
                }
                stage = 4;
                w.Add(
                     delegate
                     {
                         this.UpdateActualPercentages();

                         done();
                     }
                );
                stage = 5;
            }
            catch (Exception exc)
            {
                throw new Exception("LazyLoad failed: {" + exc.Message + "}; stage: " + stage);
                
            }
        }