diff --git a/_includes/header.html b/_includes/header.html
index 74c8d63..650a73a 100644
--- a/_includes/header.html
+++ b/_includes/header.html
@@ -8,6 +8,7 @@
 	<input type="checkbox" id="show-menu" role="button">
         <ul id="menu">
             <li><a href="/">Home</a></li>
+            <li><a href="/policies">Policies</a></li>
             <li>
                 <a href="#">FAQ &#9660;</a>
                 <ul class="hidden">
diff --git a/_sass/main.scss b/_sass/main.scss
index 0dd05b7..095b2d2 100644
--- a/_sass/main.scss
+++ b/_sass/main.scss
@@ -178,6 +178,7 @@
     padding: 0.5em;
     margin: 0 auto;
     max-width: 85%;
+    min-width: 85%;
     color: $color_text;
     background: $main_background_color;
     font-family: $font;
diff --git a/policies/index.md b/policies/index.md
new file mode 100644
index 0000000..fa47e07
--- /dev/null
+++ b/policies/index.md
@@ -0,0 +1,32 @@
+---
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+layout: default
+---
+
+# AvailablePolicies
+
+## Privacy Policies 
+
+ - [Privacy Policy (GDPR) for public websites](/policies/privacy-policy-gdpr-public.html)
+ - Privacy Policy for committers
+
+## Internal Policies
+
+ - Website Policy
+ - Mailing List Policy
\ No newline at end of file
diff --git a/policies/privacy-policy-gdpr-public.md b/policies/privacy-policy-gdpr-public.md
new file mode 100644
index 0000000..5ea509f
--- /dev/null
+++ b/policies/privacy-policy-gdpr-public.md
@@ -0,0 +1,164 @@
+---
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+layout: default
+---
+
+**---> DRAFT VERSION**
+
+
+This Privacy Policy clarifies the nature, scope and purpose of the processing of personal data (hereinafter referred to as "Data") within our online offering and the related websites, features and content, as well as external online presence, e.g. our social media profiles on. (collectively referred to as "online offer"). With regard to the terminology used, e.g. "Processing" or "Responsible", we refer to the definitions in Article 4 of the General Data Protection Regulation (GDPR).
+
+## 1.  Name and contact details of the controller and the company data protection officer
+
+This privacy policy applies to data processing by:
+
+Responsible:    
+
+The Apache Software Foundation  
+V. P. Data Privacy  
+1000 N West Street, Suite 1200  
+Wilmington, DE  19801  
+U.S.A.  
+
+E-Mail: vp-privacy@apache.org
+
+##  2. Collection and storage of personal data and the nature and purpose of their use
+
+### a) When visiting the website
+
+**TODO: what other domains do we own?**
+
+When you visit our websites https://apache.org or one of our subdomains, the browser used on your device automatically sends information to the server of our website. This information is temporarily stored in a so-called log file. The following information will be collected without your intervention and stored until automated deletion:
+
+**TODO: Wait for Infra feedback**
+ - IP address of the requesting computer,
+ - date and time of access,
+ - name and URL of the retrieved file,
+ - website from which access is made (referrer URL),
+ - The browser used and, if applicable, the operating system of your computer and the name of your access provider.
+
+The data mentioned are processed by us for the following purposes:
+
+ - ensuring a smooth connection of the website,
+ - ensuring comfortable use of our website,
+ - Evaluation of system security and stability as well
+ - for further administrative purposes.
+
+The legal basis for data processing is Art. 6 para. 1 p. 1 lit. f GDPR. Our legitimate interest follows from the data collection purposes listed above. In no case we use the collected data for the purpose of drawing conclusions about you.
+In addition, we use cookies and analysis services when visiting our website. Further details can be found under no. 4 and 5 of this privacy policy.
+
+### b) When registering for our newsletter and mailing lists
+
+If, pursuant to Art. 6 para. 1 sentence 1 lit. a GDPR have expressly consented, we use your e-mail address to regularly send you our newsletter or message arriving at our mailing lists. For the receipt of the newsletter or mailing list message the indication of an e-mail address is sufficient.
+
+We inform our visitors at regular intervals through newsletters about news and offers from The Apache Software Foundation. Furthermore, we communicate with interested person through our mailing lists.
+
+The newsletter of our company can only be received if (1) the data subject has a valid e-mail address and (2) the person concerned registers for the newsletter. For legal reasons, a confirmation e-mail will be sent to the e-mail address entered by an affected person for the first time for newsletter mailing using the double-opt-in procedure. This confirmation email is used to check whether the owner of the e-mail address as the person concerned authorized the receipt of the newsletter.
+
+**TODO: Confirm with infra, if we actually store the IP address - we should**
+
+When subscribing to the newsletter, we also store the IP address of the computer system used by the person concerned at the time of registration, as well as the date and time of registration, as assigned by the Internet Service Provider (ISP). The collection of this data is necessary in order to understand the (possible) misuse of an affected person's e-mail address at a later date and therefore serves as legal safeguards for the controller.
+
+The personal data collected in the context of registering for the newsletter will be used exclusively to send our newsletter. The personal data collected in the context of registering for a mailing list will be used exclusively to send messages arriving at our mailing list. 
+
+Subscribers may also be notified by e-mail if this is necessary for the operation of the newsletter/mailing list service or registration, as might be the case in the event of changes to the newsletter/mailing list or technical changes. 
+
+There will be no transfer of the personal data collected as part of the newsletter service to third parties. 
+
+Almost all of our mailing lists are of public nature. This means, your name and email may be exposed to the public. Also, all information you send to a mailing list will be exposed to the public. Third parties may collect this information and process separately. The sender of messages is responsible for exposing their data to the public.
+
+All content sent to mailing lists are archived indefinitely.
+
+Subscription to our newsletter and mailing lists may be terminated by the person concerned at any time. The consent to the storage of personal data that the data subject has given us for the newsletter/mailing list dispatch can be revoked at any time. For the purpose of revoking the consent, instructions are given by the end of any email. 
+
+**TODO: Check if there is such a service running**
+It is also possible to unsubscribe from the newsletter at any time, directly on the controller's website, or to inform the controller in a different way.
+
+## 3. Disclosure of data
+
+A transfer of your personal data to third parties for purposes other than those listed below does not take place.
+We only share your personal information with third parties if:
+
+ - You your according to Art. 6 para. 1 p. 1 lit. a GDPR have given express consent to this
+ - disclosure pursuant to Art. 6 para. 1 sentence 1 lit. f GDPR is required to assert, exercise or defend legal claims and there is no reason to assume that you have a predominantly legitimate interest in not disclosing your data,
+ - in the event that disclosure pursuant to Art. 6 para. 1 sentence 1 lit. c GDPR is a legal obligation, as well
+ - as permitted by law and according to Art. 6 para. 1 sentence 1 lit. b GDPR is required for the settlement of contractual relationships with you.
+
+## 4. External service providers
+The Apache Software Foundation uses the following external service providers who help to optimize the service. Insofar as these service providers process data on behalf of The Apache Software Foundation, agreements have been concluded with them which set the European data protection standards as binding and in particular prohibit the use of the data for other purposes. If we commission third parties to process data on the basis of a so-called "contract processing contract", this is done on the basis of Art. 28 GDPR.
+
+
+### (a) **TODO: Outside email provider?**
+
+The Apache Software Foundation uses the XXX to send the newsletter. This service allows The Apache Software Foundation to manage a database of email contacts internally to communicate with users via email.
+
+**TODO: Ask marketing if we actually do things like this**
+The service manages data on which date and time emails were read, as well as when the user interacted with incoming emails, for example by clicking on links contained in the email. This is done by so-called web beacons, also called tracking pixels. These are small image files that allow an evaluation of user behavior. The user can object to this tracking at any time by unsubscribing from the newsletter. Such an evaluation is not possible even if the user has disabled the display of images in his email program by default. However, in this case, the newsletter can not be fully displayed and the user may not be able to fully use all features.
+
+### (b) Hetzner:- Hosting 
+
+**TODO: Confirm if we actually use Hetzner** 
+
+The Apache Software Foundation uses the Hetzner Webhosting service of Hetzner **TODO: add address**, for hosting databases and web content. The data is stored exclusively in a **TODO: WHAT COUNTRY** data center, **TODO CHECK CERTS** which is certified to ISO 27001, 27017 and 2018 as well as PCI DSS Level 1. Of course, we have tight access rights and the data is automatically encrypted.
+
+## 5. Social Media Plug-ins
+
+We rely on our website on the basis of Art. 6 para. 1 sentence 1 lit. f GDPR social plug-ins from the social networks Facebook, Twitter and Instagram to make our company better known. The underlying commercial purpose is to be regarded as a legitimate interest within the meaning of the GDPR. Responsibility for the operation compliant with data protection is to be guaranteed by their respective providers. The integration of these plug-ins by us is done by means of the so-called two-click method to protect visitors to our website in the best possible way.
+
+### a) Youtube
+
+On our website we have integrated components from YouTube. YouTube is an internet video portal that allows video publishers to freely watch video clips and other users for free viewing, rating and commenting. YouTube allows the publication of all types of videos, so that both complete film and television broadcasts, but also music videos, trailers or user-made videos via the Internet portal are available.
+
+YouTube's operating company is YouTube, LLC, 901 Cherry Ave., San Bruno, CA 94066, USA. YouTube, LLC is a subsidiary of Google Inc., 1600 Amphitheater Pkwy, Mountain View, CA 94043-1351, USA.
+
+Each visit to one of the pages of this site operated by the controller and incorporating a YouTube component (YouTube video) will automatically cause the Internet browser on the subject's information technology system to be represented by the respective YouTube component to download an illustration of the corresponding YouTube component from YouTube. More information about YouTube can be found at https://www.youtube.com/yt/about/en/. As part of this technical process, YouTube and Google are aware of the specific bottom of our site visited by the person concerned.
+If the data subject is logged in to YouTube at the same time, YouTube recognizes by calling a sub-page containing a YouTube video, which specific bottom of our website the affected person visits. This information is collected by YouTube and Google and associated with the individual YouTube account.
+
+YouTube and Google will always receive information through the YouTube component that the data subject has visited our website if the data subject is simultaneously logged into YouTube at the time of access to our website; this happens regardless of whether the person clicks on a YouTube video or not. If such transmission of this information to YouTube and Google is not wanted by the data subject, it can prevent the transmission by logging out of their YouTube account before calling our website.
+
+YouTube's privacy policy, available at https://www.google.com/intl/en/policies/privacy/, identifies the collection, processing, and use of personally identifiable information by YouTube and Google.
+
+## 7. Affected rights
+
+You have the right:
+
+ - in accordance with Art. 15 GDPR, to request information about your personal data processed by us. In particular, you can provide information on the processing purposes, the category of personal data, the categories of recipients to whom your data has been disclosed, the planned retention period, the right to rectification, deletion, limitation of processing or opposition, the existence of a The right to complain, the source of their data, if not collected from us, and the existence of automated decision-making including profiling and, where appropriate, meaningful information about their details;
+ - in accordance with Art. 16 GDPR, immediately demand the correction of incorrect or complete personal data stored with us;
+ - in accordance with Art. 17 GDPR, to demand the deletion of your personal data stored by us, unless the processing for the exercise of the right to freedom of expression and information, for the fulfillment of a legal obligation, for reasons of public interest or for the assertion, exercise or defense of Legal claims is required;
+ - to demand the restriction of the processing of your personal data according to Art. 18 GDPR, as far as the accuracy of the data is disputed by you, the processing is unlawful, but you reject its deletion and we no longer need the data, but you assert this, Exercise or defense of legal claims or you have objected to the processing in accordance with Art. 21 GDPR;
+ - in accordance with Art. 20 GDPR, to receive your personal data provided to us in a structured, standard and machine-readable format or to request transmission to another person responsible;
+ - according to Art. 7 para. 3 GDPR, to revoke your once given consent to us at any time. As a result, we are not allowed to continue the data processing based on this consent for the future and
+ - to complain to a supervisory authority pursuant to Art. 77 GDPR. As a rule, you can contact the supervisory authority of your usual place of residence or work or our office.
+
+## 8. Right to object
+
+If your personal data are based on legitimate interests in accordance with Art. 6 para. 1 sentence 1 lit. f GDPR are processed, you have the right to file an objection against the processing of your personal data in accordance with Art. 21 GDPR, provided that there are reasons for this arising from your particular situation or the objection is directed against direct mail. In the latter case, you have a general right of objection, which is implemented by us without specifying any particular situation.
+If you would like to exercise your right of revocation or objection, please send an e-mail to vp-privacy@apache.org.
+
+## 9. Data security
+
+We use the popular SSL (Secure Socket Layer) method within the site visit, in conjunction with the highest level of encryption supported by your browser. In general, this is a 256-bit encryption. If your browser does not support 256-bit encryption, we'll use 128-bit v3 technology instead. Whether a single page of our website is encrypted is shown by the closed representation of the key or lock icon in the lower status bar of your browser.
+
+We also take appropriate technical and organizational security measures to protect your data against accidental or intentional manipulation, partial or total loss, destruction or against unauthorized access by third parties. Our security measures are continuously improved in line with technological developments.
+
+## 10. Updating and changing this privacy policy
+
+This privacy policy is currently valid and is valid as of **TODO: VALIDITY DATE**.
+
+As a result of the further development of our website and offers thereof or due to changed legal or official requirements, it may be necessary to change this privacy policy. The current privacy policy can be viewed and printed by you at any time on the website at https://privacy.apache.org/policies/privacy-policy-public.html.
\ No newline at end of file
