Added concrete classes and a factory for these