public static Mock<IEngine> AddEngine(string name, string version, string category)
		{
			var engineMock = new Mock<IEngine>();
			var metadata = new EngineMetadataAttribute(name, version, category);

			engines.Add(new Lazy<IEngine, IEngineMetadata>(() => engineMock.Object, metadata));

			return engineMock;
		}
        protected static Mock <IEngine> AddEngine(string name, string version, string category, bool @internal)
        {
            var engineMock = new Mock <IEngine>();
            var metadata   = new EngineMetadataAttribute(name, version, category, @internal);

            engines.Add(new Lazy <IEngine, IEngineMetadata>(() => engineMock.Object, metadata));

            return(engineMock);
        }
		protected static Mock<IEngine> AddEngine(string name, string version, string category, string outputCategory, bool @internal)
		{
			var engineMock = new Mock<IEngine>();
			var metadata = new EngineMetadataAttribute(name, version, category, @internal);

			Engines.Add(new Lazy<IEngine, IEngineMetadata>(() => engineMock.Object, metadata));

			return engineMock;
		}