private static void BuildCommon()
        {
            // create the dataset
            Services.Dataset = new Dataset.Source.DatasetSource("operational", "net.xml");

            // initialize the communciations builder (gets object directory, channel factory)
            CommBuilder.InitComm();

            // create the tunable parameter table
            using (FileStream fs = new FileStream("params.xml", FileMode.OpenOrCreate, FileAccess.Read)) {
                Services.Params = new UrbanChallenge.OperationalUIService.Parameters.TunableParamTable(fs);
            }

            // build a default planar project
            Services.Projection = new UrbanChallenge.Common.EarthModel.PlanarProjection(Settings.DefaultOrigin.X * Math.PI / 180.0, Settings.DefaultOrigin.Y * Math.PI / 180.0);

            // create the relative pose builder
            // 1000 entries should create 10 seconds of queue space
            Services.RelativePose = new UrbanChallenge.Common.Pose.RelativeTransformBuilder(10000, true);

            // build the tracked distance provider
            Services.TrackedDistance = new OperationalLayer.Pose.TrackedDistance(10000);

            // build the stopline provider
            Services.Stopline = new OperationalLayer.Pose.StopLineService();

            // build the absolute pose service
            Services.AbsolutePose = new OperationalLayer.Pose.AbsolutePoseQueue(10000);

            // build the absolute posterior pose service
            Services.AbsolutePosteriorPose = new OperationalLayer.Pose.AbsolutePoseQueue(1000);

            // build the lane model provider
            Services.LaneModels = new OperationalLayer.RoadModel.LaneModelProvider();

            // build the road model provider
            Services.RoadModelProvider = new OperationalLayer.RoadModel.CombinedRoadModelProvider();

            // Create the vehicle state provider
            Services.StateProvider = new OperationalLayer.Pose.VehicleStateProvider();

            // create the obstacle manager
            Services.ObstacleManager = new ObstacleManager();

            // build the UI service
            Services.UIService = new UIService();

            TimeoutMonitor.Initialize();
        }