class FeatureLoader implements IFeatureLoader {

    @Override
    public IFeatureStatus loadFeature(final IPath featurePath)
            throws FeatureLoadException {
        FeatureStatusImpl status = loadFeature0(featurePath);

        for (FeatureStatusImpl dependencyStatus : status.getDependencies()) {
            if (!dependencyStatus.isLoaded()) {
                throw new FeatureLoadException(
                        MessageFormat.format("Feature ''{0}'' required by ''{1}'' is not loaded.",
                                dependencyStatus.getId(), status.getId()));
            }
        }

        try {
            preStartProcess(status);
            status.load();
        } catch (ActionExecuteException e) {
            throw new FeatureLoadException("Error occurred loading the feature.", e);
        }

        return status;
    }

    public  FeatureLoader();

}