class FeatureManagerActor {

    public void onFeatureStepCompleted(final OnFeatureStepCompletedWrapper wrapper)
            throws FeatureManagementException {
        IFeature feature;
        try {
            feature = wrapper.getFeature();
            checkAndRunConnectedFeatures();
            for (IFeature loadedFeature : this.loadedFeatures.values()) {
                if (null != feature.getDependencies()) {
                    feature.getDependencies().remove(loadedFeature.getName());
                }
            }
            if (null != feature.getDependencies() && !feature.getDependencies().isEmpty()) {
                IMessageProcessor mp = wrapper.getMessageProcessor();
                mp.pauseProcess();
                //wrapper.getFeatureProcess().put(mp, feature);
                this.featureProcess.put(mp, feature);
            }
        } catch (ReadValueException | AsynchronousOperationException e) {
            throw new FeatureManagementException(e);
        }
    }

    public  FeatureManagerActor();

}