diff --git a/README.md b/README.md
index 91ae7ac..f719152 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,14 @@
 # Openwhisk RSS Package
 
+[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)
+[![Build Status](https://travis-ci.org/apache/incubator-openwhisk-package-rss.svg?branch=master)](https://travis-ci.org/apache/incubator-openwhisk-package-rss)
+
 This package allows users to subscribe to RSS/ATOM feeds and receive events when a new feed item is available. It creates one event/activation per feed item that meets the criteria. Below is the hierarchy of the RSS Package.
 
 ```
 openwhisk-package-rss/
 ├── CONTRIBUTING.md
-|-- images 
+|-- images
 ├── feeds
 │      └── feed.js
 ├── install.sh
@@ -24,7 +27,6 @@
 └── uninstall.sh
 ```
 
-
 ## Architecture
 
 ![Architecture](images/rssarchitecture.png?raw=true "High Level Architecture")
@@ -58,11 +60,11 @@
 - **$AUTH_KEY** is the OpenWhisk Authentication key(Run `wsk property get` to obtain it).
 
 ### Local installation:
-Local installation requires running the OpenWhisk environment locally prior to installing the package. To run OpenWhisk locally follow the instructions at https://github.com/openwhisk/openwhisk/blob/master/tools/vagrant/README.md.    
+Local installation requires running the OpenWhisk environment locally prior to installing the package. To run OpenWhisk locally follow the instructions at https://github.com/apache/incubator-openwhisk/blob/master/tools/vagrant/README.md.
 
 `./install.sh  $EDGE_HOST $AUTH_KEY $WSK_CLI $PROVIDER_ENDPOINT`
 
-`./uninstall.sh  $EDGE_HOST $AUTH_KEY $WSK_CLI` 
+`./uninstall.sh  $EDGE_HOST $AUTH_KEY $WSK_CLI`
 
 where :
 - **$EDGE_HOST** is where openwhisk is deployed
@@ -72,7 +74,6 @@
 
 This will create a new package called **rss** as well as feed action within the package.
 
-
 ## RSS Service(Event Provider) Deployment
 
 In order to support the openwhisk package, there needs to be an event generating service that fires a trigger in the openwhisk environment. This service polls an RSS/ATOM source and applies logic to determine whether a feed item should be delivered to the openwhisk rss package. It internally uses  Cloudant/CouchDB database to persist the triggers' information. You will need to initialized the DB prior to using this service. The event provider service keeps a registry of triggers. When a trigger is initially created, the service fires events for RSS feed items which are published within pollingInterval from now.
@@ -82,14 +83,15 @@
 ### Bluemix Deployment:
 This service can be hosted as a cf app on CloudFoundry. To deploy on IBM Bluemix:
 
-1. Create a Cloudant service on bluemix, and create a database with name 'registered_triggers'
+1. Create a Cloudant service on IBM Bluemix, and create a database with name 'registered_triggers'
 1. Change the name and host fields in the manifest.yml to be unique. Bluemix requires routes to be globally unique.
 2. Run `cf push`
 
 ### Local Deployment:
-This service can be ran as a node app on your local machine.
+This service can be run as a node app on your local machine.
 
-1. Install a local CouchDB, for how to install a CouchDB locally, please follow instruction at https://developer.ibm.com/open/2016/05/23/setup-openwhisk-use-local-couchdb/
+1. Install a local CouchDB. Detailed instructions can be found at:
+   - https://developer.ibm.com/open/2016/05/23/setup-openwhisk-use-local-couchdb/
 
 2. Create a database with name 'registered_triggers' in the CouchDB.
 
@@ -148,22 +150,18 @@
      "payload": "hello,Lorem ipsum 2016-09-13T03:05:57+00:00!descriptionUllamco esse officia cillum exercitation ullamco aute aute quis adipisicing officia."
  }
  ```
-## How to do tests
+## How to run tests?
 The integration test could only be performed with a local openwhisk deployment:
 
-   1. Copy your test files into `openwhisk/tests/src/packages`   
-   2. `vagrant ssh` to your local vagrant environment      
-   3. Navigate to the openwhisk directory   
+   1. Copy your test files into `openwhisk/tests/src/packages`
+   2. `vagrant ssh` to your local vagrant environment
+   3. Navigate to the openwhisk directory
    4. Run this command - `gradle :tests:test --tests "packages.CLASS_NAME" `
 
-To execute all tests, run `gradle :tests:test` 
+To execute all tests, run `gradle :tests:test`
 
-## How to contributing
+## How to contribute?
 Please refer to [CONTRIBUTING.md](CONTRIBUTING.md)
 
 ## License
-Copyright 2015-2016 IBM Corporation
-
-Licensed under the [Apache License, Version 2.0 (the "License")](http://www.apache.org/licenses/LICENSE-2.0.html).
-
-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.
+See [LICENSE.txt](https://github.com/apache/incubator-openwhisk-package-rss/blob/master/LICENSE.txt)
diff --git a/feeds/feed.js b/feeds/feed.js
index 4c8315b..491d220 100644
--- a/feeds/feed.js
+++ b/feeds/feed.js
@@ -1,18 +1,19 @@
 /*
-* Copyright 2015-2016 IBM Corporation
-*
-* Licensed 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.
-*/
+ * 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.
+ */
 
 var request = require('request');
 
diff --git a/install.sh b/install.sh
index a8dba09..598265a 100755
--- a/install.sh
+++ b/install.sh
@@ -1,21 +1,22 @@
 #!/bin/bash
 
-#/
-# Copyright 2015-2016 IBM Corporation
 #
-# Licensed 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
+# 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
+#     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.
-#/
 #
+
 set -e
 set -x
 
@@ -42,4 +43,3 @@
 	-a description "A feed action to register for rss events meeting user specified criteria" \
 	-a parameters '[{"name":"url","required":true,"bindTime":true,"description":"Source URL"},{"name":"pollingInterval","required":true,"bindTime":true,"description":"RSS polling interval"},{"name":"filter","required":false,"bindTime":true,"description":"Comma separated list of keywords to watch for"}]' \
     -a sampleInput '{"url":"http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml","pollingInterval":"2h", "filter":"Washington, Capitol"}' \
-    
\ No newline at end of file
diff --git a/rssEventProvider/app.js b/rssEventProvider/app.js
index 346c0ba..44933d3 100755
--- a/rssEventProvider/app.js
+++ b/rssEventProvider/app.js
@@ -1,18 +1,19 @@
 /*
-* Copyright 2015-2016 IBM Corporation
-*
-* Licensed 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.
-*/
+ * 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.
+ */
 
 
 const Cloudant = require('cloudant');
diff --git a/tests/src/RSSTests.scala b/tests/src/RSSTests.scala
index 6122747..81813c5 100644
--- a/tests/src/RSSTests.scala
+++ b/tests/src/RSSTests.scala
@@ -1,11 +1,12 @@
 /*
- * Copyright 2015-2016 IBM Corporation
+ * 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
  *
- * Licensed 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
+ *     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,
diff --git a/uninstall.sh b/uninstall.sh
index e81ec9c..6daa480 100755
--- a/uninstall.sh
+++ b/uninstall.sh
@@ -1,20 +1,21 @@
 #!/bin/bash
 
-#/
-# Copyright 2015-2016 IBM Corporation
 #
-# Licensed 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
+# 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
+#     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.
-#/
+#
 
 set -e
 set -x
