public async Task CreateGatewaysFact()
        {
            var output = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            var ns = default(Namespace);

            // Table Data Gateway
            ns = new Namespace(NAMESPACE, @"TableDataGateways");
            var context = new TableDataGatewaysContext
            {
                Namespace = new Namespace(NAMESPACE, ns.Child),
                Imports = new[] { "System.Data.Common", "kkkkkkaaaaaa.Data.Common" },
                TypeName = new TypeName(@"", @"", @"Gateway"),
                Inherits = "GatewayBase",
                OutputPath = Path.Combine(output, ns.Child),
            };

            // Entities
            ns = new Namespace(NAMESPACE, @"Aggregates");
            context.Entities = await new Entities(new EntitiesContext
            {
                Namespace = ns,
                Imports = new [] { @"System", },
                TypeName = new TypeName(@"", @"", @"Entity"),
                Inherits = @"",
                OutputPath = Path.Combine(output, ns.Child),

            }).CreateEntitiesAsync();

            var gateways = new TableDataGateways(context);
            await gateways.CreateGatewaysAsync();

            TextTemplatingProcess.StartExplorer(output);
        }