Added some classes for the internal model and the public Generator  class