add Engine interface

  * Engine interface class. ( will change )
  * Base of the pimpl idiom.