public void Run()
        {
            var beansXml  = _routeXml.Elements("bean");
            var xElements = beansXml as XElement[] ?? beansXml.ToArray();

            if (!xElements.Any())
            {
                return;
            }

            foreach (var beanXml in xElements)
            {
                try
                {
                    var id     = beanXml.Attributes("id").First().Value;
                    var @class = beanXml.Attributes("class").First().Value;

                    var type = SimpleExpression.GetBean(@class);
                    if (type == null)
                    {
                        continue;
                    }
                    object bean = null;

                    var constrArgs = beanXml.Elements("const-arg").Elements("index");
                    var enumerable = constrArgs as XElement[] ?? constrArgs.ToArray();

                    if (!enumerable.Any())
                    {
                        bean = Activator.CreateInstance(type);
                    }
                    else
                    {
                        var @params       = type.GetConstructors()[0].GetParameters();
                        var args          = new List <object>();
                        var xmlConstrArgs = enumerable.ToList();

                        @params.ToList().ForEach(c =>
                        {
                            try
                            {
                                var paramType   = c.ParameterType;
                                var xmlIndex    = xmlConstrArgs[c.Position];
                                var paramValObj = xmlIndex.Attribute("value").Value;
                                var argObj      = Convert.ChangeType(paramValObj, paramType);
                                args.Add(argObj);
                            }
                            catch (Exception exc)
                            {
                                var msg = exc.Message;
                                Console.WriteLine("{0} => {1}", msg, exc.StackTrace);
                            }
                        });

                        //init bean
                        try
                        {
                            bean = Activator.CreateInstance(
                                type,
                                BindingFlags.Public | BindingFlags.Instance,
                                default(Binder),
                                args.ToArray(),
                                default(CultureInfo));
                        }
                        catch
                        {
                            continue;
                        }
                    }

                    //process product.
                    IList <XElement> xmlColl = null;

                    try
                    {
                        var propertyXmlColl = beanXml.Elements("propertys").Elements("property");
                        xmlColl = propertyXmlColl as IList <XElement> ?? propertyXmlColl.ToList();
                    }
                    catch (Exception)
                    { }

                    if (xmlColl.Any())
                    {
                        foreach (var item in xmlColl)
                        {
                            string key = "", @value = "";

                            try
                            {
                                key    = item.Attribute("key").Value;
                                @value = item.Attribute("value").Value;

                                var prop = bean.GetType().GetProperty(key);
                                if (prop == null)
                                {
                                    continue;
                                }

                                //does rubbish.. change
                                var res = SimpleExpression.ResolveObjectFromRegistry(@value);
                                prop.SetValue(bean, Convert.ChangeType(res, prop.PropertyType), null);
                            }
                            catch (Exception exc)
                            {
                                var msg = exc.Message + string.Format(" [{0}] - [{1}] ", key, @value);
                                Console.WriteLine("{0} => {1}", msg, exc.StackTrace);
                            }
                        }
                    }

                    SynapseContext.Registry.TryAdd(id, bean);
                }
                catch (Exception exc)
                {
                    var msg = exc.Message;
                    Console.WriteLine("{0} => {1}", msg, exc.StackTrace);
                }
            }
        }