code: func NewEngine(s session.Session, db Database, e *crypto.Engine,
  	client *registry.Client, guard *secure.Guard) *Engine {
  	engine := &Engine{
  		session: s,
  		db:      db,
  		crypto:  e,
  		client:  client,
  		guard:   guard,
  	}
  	engine.Worklog = newWorklog(engine)
  	engine.Machine = Machine{engine: engine}
  	engine.Session = Session{engine: engine}
  	return engine
  }
docs: // NewEngine returns a new Engine