@Override
  public Object execute(ExecutionEvent event) throws ExecutionException {
    if (KinectManager.INSTANCE.isSkeletonTrackingStarted()) {

      try {
        Notifier km = KinectManager.INSTANCE.getSkeletonModel();
        IncQueryEngine e = IncQueryEngine.on(km);
        // ymca demo
        new IncQueryMatcherHelper(YMatcher.on(e));
        new IncQueryMatcherHelper(MMatcher.on(e));
        new IncQueryMatcherHelper(CMatcher.on(e));
        new IncQueryMatcherHelper(AMatcher.on(e));
        new IncQueryMatcherHelper(IMatcher.on(e));
        new IncQueryMatcherHelper(QMatcher.on(e));
        // robot demo
        new IncQueryMatcherHelper(FSMatcher.on(e));
        new IncQueryMatcherHelper(FEMatcher.on(e));
        new IncQueryMatcherHelper(BSMatcher.on(e));
        new IncQueryMatcherHelper(BEMatcher.on(e));
        // sheldon demo
        new IncQueryMatcherHelper(SEMatcher.on(e));
        new IncQueryMatcherHelper(SMMatcher.on(e));
        new IncQueryMatcherHelper(SEMatcher.on(e));

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

    } else {
      System.out.println("Start skeleton simulator first!");
    }
    return null;
  }
 @SuppressWarnings("unchecked")
 @Override
 public void engineWiped() {
   String patternName = matcher.getPatternName();
   try {
     matcher =
         (IncQueryMatcher<IPatternMatch>)
             QuerySpecificationRegistry.getQuerySpecification(patternName)
                 .getMatcher(engineForMatcher());
   } catch (IncQueryException e) {
     IncQueryLoggingUtil.getLogger(getClass())
         .error("[QueryBasedFeature] Exception during wipe callback: " + e.getMessage(), e);
   }
   dm = matcher.newDeltaMonitor(false);
 }