public void start() {
    try {
      // start store.
      ZWaveProductsStoreModel storeModel = new ZWaveProductsStoreModel();
      storeModel.setContentDeliveryDriver(
          new WebSocketWrapper(new LevelDbContentDeliveryDriver("ZWaveProductsDb"), 23666));
      storeModel
          .connect()
          .then(
              new Callback<Throwable>() {
                @Override
                public void on(Throwable throwable) {
                  final ZWaveProductsStoreUniverse universe = storeModel.universe(0);
                  ZWaveProductsStoreView baseView = universe.time(0);
                  baseView
                      .select("/")
                      .then(
                          new Callback<KObject[]>() {
                            public void on(KObject[] kObjects) {
                              if (kObjects == null || kObjects.length == 0) {
                                ProductStore store = baseView.createProductStore();
                                baseView
                                    .setRoot(store)
                                    .then(
                                        new Callback<Throwable>() {
                                          public void on(Throwable throwable) {
                                            System.err.println("ProductStore Loading");
                                            load(store);
                                            storeModel
                                                .save()
                                                .then(
                                                    new Callback<Throwable>() {
                                                      @Override
                                                      public void on(Throwable throwable) {
                                                        if (throwable != null) {
                                                          throwable.printStackTrace();
                                                        }
                                                      }
                                                    });
                                          }
                                        });
                              } else {
                                System.err.println("ProductStore root found");
                              }
                            }
                          });
                }
              });

      // serves pictures
      server =
          Undertow.builder()
              .addHttpListener(currentPort, currentIp)
              .setHandler(
                  Handlers.path()
                      .addPrefixPath(
                          "/",
                          Handlers.resource(
                              new ClassPathResourceManager(
                                  this.getClass().getClassLoader(), "static"))))
              .build();
      server.start();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }