Base implementation

This factory should be refactored to use a options class with a list of available plugins