HerculesProvider change from abstract class to interface