diff --git a/index.html b/index.html
deleted file mode 100644
index e2cfcf2..0000000
--- a/index.html
+++ /dev/null
@@ -1,248 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="utf-8">
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-
-  <title>Apache ARIA TOSCA</title>
-
-  
-  
-  
-
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
-
-  <!-- CSS -->
-  <link rel="stylesheet" href="/css/owl.carousel.css">
-  <link rel="stylesheet" href="/css/bootstrap.min.css">
-  <link rel="stylesheet" href="/css/font-awesome.min.css">
-  <link rel="stylesheet" href="/css/style.css">
-  <link rel="stylesheet" href="/css/ionicons.min.css">
-  <link rel="stylesheet" href="/css/animate.css">
-  <link rel="stylesheet" href="/css/responsive.css">
-
-
-  <!-- Js -->
-  <script src="/js/vendor/modernizr-2.6.2.min.js"></script>
-  <script src="/js/vendor/jquery-1.10.2.min.js"></script>
-  <script>window.jQuery || document.write('<script src="/js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
-  <script src="/js/bootstrap.min.js"></script>
-  <script src="/js/owl.carousel.min.js"></script>
-  <script src="/js/plugins.js"></script>
-
-  <script src="/js/min/waypoints.min.js"></script>
-  <script src="/js/jquery.counterup.js"></script>
-
-
-
-
-
-
-  <script src="/js/main.js"></script>
-  <script src="/js/plugins/jquery.mixitup.min.js"></script>
-
-</head>
-
-  <body id="js-body">
-    
-
-    <!--[if lt IE 9]><div class="upgrade notice-warning"><strong>Your browser is quite old!</strong> Why not <a href="http://whatbrowser.org/">upgrade to a newer one</a> to better enjoy this site?</div><![endif]-->
-
-    <!-- Header Start -->
-<header>
-<div class="container">
-  <div class="row">
-    <div class="col-md-12">
-      <!-- header Nav Start -->
-      <nav class="navbar navbar-default">
-        <div class="container-fluid">
-          <!-- Brand and toggle get grouped for better mobile display -->
-          <div class="navbar-header">
-            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            </button>
-            <a class="navbar-brand" href="/">
-              <img src="/images/aria-logo.png" alt="Apache ARIA TOSCA">
-            </a>
-          </div>
-            <!-- Collect the nav links, forms, and other content for toggling -->
-            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
-
-              <nav role="navigation" class="menu top-menu">
-                  <ul class="nav navbar-nav navbar-right">
-	<li class="home"><a href="/">Apache ARIA TOSCA</a></li>
-	
-    
-    <li><a href="/about/" >About</a></li>
-  
-    
-    <li><a href="/community/" >Community</a></li>
-  
-    
-    <li><a href="/getting-started/" >Getting Started</a></li>
-  
-    
-    <li><a href="/getting-started/" >Docs</a></li>
-  
-    
-    <li><a href="/roadmap/" >Roadmap</a></li>
-  
-</ul>
-
-              </nav>
-            </div><!-- /.navbar-collapse -->
-          </div><!-- /.container-fluid -->
-        </nav>
-      </div>
-    </div>
-  </div>
-</header><!-- header close -->
-
-
-
-    <div id="page-wrapper">
-      <div id="main" role="main">			
-	<div class="wrap">
-		
-		<div class="page-title">
-			<h1></h1>
-			
-		</div>
-		<div class="archive-wrap">
-			<div class="page-content">
-				<!-- Slider Start -->
-<section id="slider">
-	<div class="container">
-		<div class="row">
-			<div class="col-md-10 col-md-offset-2">
-				<div class="block">
-					<h1 class="animated fadeInUp">Apache ARIA TOSCA <br /> ORCHESTRATION ENGINE</h1>
-					<p class="animated fadeInUp"> Embeddable lightweight library and command line tool<br />
-					For NFV and Hybrid Cloud Orchestration</p>
-				</div>
-			</div>
-		</div>
-	</div>
-</section>
-
-<!-- Wrapper Start -->
-<section id="intro">
-	<div class="container">
-		<div class="row">
-			<div class="col-md-7 col-sm-12">
-				<div class="block">
-					<div class="section-title">
-						<h2>About Apache ARIA TOSCA</h2>
-						<p></p>
-					</div>
-					<p>ARIA TOSCA is an open, light, CLI-driven library of orchestration tools that other open projects can consume to easily build TOSCA-based orchestration solutions. ARIA is now an incubation project at the Apache Software Foundation.</p>
-				</div>
-			</div><!-- .col-md-7 close -->
-			<div class="col-md-5 col-sm-12">
-				<div class="block">
-					<img src="images/aria-logo-large.png" alt="Img" />
-				</div>
-			</div><!-- .col-md-5 close -->
-		</div>
-	</div>
-</section>
-
-<section id="feature">
-	<div class="container">
-		<div class="row">
-			<div class="col-md-6 col-md-offset-6">
-				<h2>Open Source, Open Governance</h2>
-				<p>OASIS TOSCA offers a vendor neutral standard for modeling cloud based applications, ARIA is an open implementation of the TOSCA specification, allowing complete visibility and free use of all it’s source code https://github.com/apache/incubator-ariatosca</p>
-				<p>AIRA is an Apache Software Foundation project in incubation process, aiming to become an independent project governed by it’s active contributors following a meritocratic model. Committers of project will be leading the project’s direction and influencing thought contribution.</p>
-				<a href="https://www.apache.org/foundation/how-it-works.html" class="btn btn-view-works">Learn More</a>
-			</div>
-		</div>
-	</div>
-</section>
-<!-- Call to action Start -->
-<section id="call-to-action">
-	<div class="container">
-		<div class="row">
-			<div class="col-md-12">
-				<div class="block">
-					<h2>Get Started with Apache ARIA TOSCA</h2>
-					<p></p>
-					<a class="btn btn-default btn-call-to-action" href="/getting-started">Get Started Now</a>
-				</div>
-			</div>
-		</div>
-	</div>
-</section>
-
-			</div><!-- /.page-content -->
-		</div class="archive-wrap"><!-- /.archive-wrap -->
-	</div><!-- /.wrap -->
-</div><!-- /#main -->
-      
-
-<!-- Wrapper Start -->
-<section id="intro" style="padding-top:30px; padding-bottom:30px">
-	<div class="container">
-		<div class="row">
-			<div class="col-md-10 col-sm-12">
-				<div class="block">
-					<p>
-						Apache ARIA TOSCA is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
-					</p>
-				</div>
-			</div><!-- .col-md-7 close -->
-			<div class="col-md-2 col-sm-12">
-				<div class="block" valign="middle" style="vertical-align: middle;">
-					<img src="/images/incubator_power_ring.png" alt="ARIA Podling"  >
-				</div>
-			</div><!-- .col-md-5 close -->
-		</div>
-	</div>
-</section>
-
-<footer>
-	<div class="container">
-		<div class="row">
-			<div class="col-md-12">
-				<div class="footer-manu">
-
-					<ul class="menu-item">
-					
-			      
-						<li><a href="/about/" >About</a></li>
-					
-			      
-						<li><a href="/community/" >Community</a></li>
-					
-			      
-						<li><a href="/getting-started/" >Getting Started</a></li>
-					
-			      
-						<li><a href="/roadmap/" >Roadmap</a></li>
-					
-					</ul>
-				</div>
-
-				<p> Copyright © 2017 The Apache Software Foundation. Licensed under the Apache License, Version 2.0. <br />
-				    Apache, the Apache Feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.</p>
-			</div>
-		</div>
-	</div>
-</footer>
-
-    </div>
-
-    <script src="/js/vendor/jquery-1.10.2.min.js"></script>
-    <script src="/js/plugins/jquery.mixitup.min.js"></script>
-    <script src="/js/owl.carousel.min.js"></script>
-    <script src="/js/jquery.counterup.js"></script>
-
-    <script src="/js/main.js"></script>
-
-  </body>
-
-</html>
