diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 5cb7886..0fbb781 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -21,6 +21,10 @@
 # Release Notes
 
 
+### 1.2.3 (Feb 28, 2017)
+* [CB-12369](https://issues.apache.org/jira/browse/CB-12369) Add plugin typings from `DefinitelyTyped`
+* [CB-12363](https://issues.apache.org/jira/browse/CB-12363) Added build badges for **iOS 9.3** and **iOS 10.0**
+
 ### 1.2.2 (Dec 12, 2016)
 * [CB-12227](https://issues.apache.org/jira/browse/CB-12227) (windows) Fixed Browserify error
 * [CB-12236](https://issues.apache.org/jira/browse/CB-12236) - Fix RELEASENOTES.md for cordova-plugin-battery-status
diff --git a/package.json b/package.json
index aab5fe3..6019cc9 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cordova-plugin-battery-status",
-  "version": "1.2.3-dev",
+  "version": "1.2.3",
   "description": "Cordova Battery Plugin",
   "types": "./types/index.d.ts",
   "cordova": {
diff --git a/plugin.xml b/plugin.xml
index 4cb717c..6c11afd 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -1,133 +1,84 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-
-<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
-      id="cordova-plugin-battery-status"
-      version="1.2.3-dev">
-    <name>Battery</name>
-    <description>Cordova Battery Plugin</description>
-    <license>Apache 2.0</license>
-    <keywords>cordova,battery</keywords>
-    <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status.git</repo>
-    <issue>https://issues.apache.org/jira/browse/CB/component/12320643</issue>
-
-    <js-module src="www/battery.js" name="battery">
-        <clobbers target="navigator.battery" />
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-battery-status" version="1.2.3">
+  <name>Battery</name>
+  <description>Cordova Battery Plugin</description>
+  <license>Apache 2.0</license>
+  <keywords>cordova,battery</keywords>
+  <repo>https://git-wip-us.apache.org/repos/asf/cordova-plugin-battery-status.git</repo>
+  <issue>https://issues.apache.org/jira/browse/CB/component/12320643</issue>
+  <js-module src="www/battery.js" name="battery">
+    <clobbers target="navigator.battery"/>
+  </js-module>
+  <platform name="android">
+    <config-file target="res/xml/config.xml" parent="/*">
+      <feature name="Battery">
+        <param name="android-package" value="org.apache.cordova.batterystatus.BatteryListener"/>
+      </feature>
+    </config-file>
+    <source-file src="src/android/BatteryListener.java" target-dir="src/org/apache/cordova/batterystatus"/>
+  </platform>
+  <platform name="amazon-fireos">
+    <config-file target="res/xml/config.xml" parent="/*">
+      <feature name="Battery">
+        <param name="android-package" value="org.apache.cordova.batterystatus.BatteryListener"/>
+      </feature>
+    </config-file>
+    <source-file src="src/android/BatteryListener.java" target-dir="src/org/apache/cordova/batterystatus"/>
+  </platform>
+  <platform name="ubuntu">
+    <header-file src="src/ubuntu/battery.h"/>
+    <source-file src="src/ubuntu/battery.cpp"/>
+  </platform>
+  <platform name="ios">
+    <config-file target="config.xml" parent="/*">
+      <feature name="Battery">
+        <param name="ios-package" value="CDVBattery"/>
+      </feature>
+    </config-file>
+    <header-file src="src/ios/CDVBattery.h"/>
+    <source-file src="src/ios/CDVBattery.m"/>
+  </platform>
+  <platform name="blackberry10">
+    <source-file src="src/blackberry10/index.js" target-dir="Battery"/>
+    <config-file target="www/config.xml" parent="/widget">
+      <feature name="Battery" value="Battery"/>
+    </config-file>
+  </platform>
+  <platform name="wp7">
+    <config-file target="config.xml" parent="/*">
+      <feature name="Battery">
+        <param name="wp-package" value="Battery"/>
+      </feature>
+    </config-file>
+    <source-file src="src/wp/Battery.cs"/>
+  </platform>
+  <platform name="wp8">
+    <config-file target="config.xml" parent="/*">
+      <feature name="Battery">
+        <param name="wp-package" value="Battery"/>
+      </feature>
+    </config-file>
+    <source-file src="src/wp/Battery.cs"/>
+  </platform>
+  <platform name="windows">
+    <js-module src="src/windows/BatteryProxy.js" name="Battery">
+      <runs/>
     </js-module>
-    
-    <!-- android -->
-    <platform name="android">
-        <config-file target="res/xml/config.xml" parent="/*">
-            <feature name="Battery" >
-                <param name="android-package" value="org.apache.cordova.batterystatus.BatteryListener"/>
-            </feature>
-        </config-file>
-
-        <source-file src="src/android/BatteryListener.java" target-dir="src/org/apache/cordova/batterystatus" />
-    </platform>
-
-    <!-- amazon-fireos -->
-    <platform name="amazon-fireos">
-        <config-file target="res/xml/config.xml" parent="/*">
-            <feature name="Battery" >
-                <param name="android-package" value="org.apache.cordova.batterystatus.BatteryListener"/>
-            </feature>
-        </config-file>
-
-        <source-file src="src/android/BatteryListener.java" target-dir="src/org/apache/cordova/batterystatus" />
-    </platform>
-    
-    <!-- ubuntu -->
-    <platform name="ubuntu">
-        <header-file src="src/ubuntu/battery.h" />
-        <source-file src="src/ubuntu/battery.cpp" />
-    </platform>
-
-    <!-- ios -->
-    <platform name="ios">    
-        <config-file target="config.xml" parent="/*">
-            <feature name="Battery">
-                <param name="ios-package" value="CDVBattery" /> 
-            </feature>
-        </config-file>
-        <header-file src="src/ios/CDVBattery.h" />
-	    <source-file src="src/ios/CDVBattery.m" />
-    </platform>
-
-    <!-- blackberry10 -->
-    <platform name="blackberry10">
-    <source-file src="src/blackberry10/index.js" target-dir="Battery" />
-        <config-file target="www/config.xml" parent="/widget">
-            <feature name="Battery" value="Battery"/>
-        </config-file>
-    </platform>
-
-    <!-- wp7 -->
-    <platform name="wp7">
-        <config-file target="config.xml" parent="/*">
-            <feature name="Battery">
-                <param name="wp-package" value="Battery"/>
-            </feature>
-        </config-file>
-
-        <source-file src="src/wp/Battery.cs" />
-    </platform>
-
-    <!-- wp8 -->
-    <platform name="wp8">
-        <config-file target="config.xml" parent="/*">
-            <feature name="Battery">
-                <param name="wp-package" value="Battery"/>
-            </feature>
-        </config-file>
-
-        <source-file src="src/wp/Battery.cs" />
-    </platform>
-
-    <!-- windows -->
-    <platform name="windows">	
-        <js-module src="src/windows/BatteryProxy.js" name="Battery">
-            <runs />
-        </js-module>
-        
-        <framework src="src/windows/BatteryStatus.winmd" custom="true" target="phone"/>
-    </platform>
-
-    <!-- tizen -->
-    <platform name="tizen">
-        <js-module src="src/tizen/BatteryStatusProxy.js" name="BatteryStatusProxy">
-            <runs/>
-        </js-module>
-    </platform>
-
-    <!-- firefoxos -->
-    <platform name="firefoxos">
-        <js-module src="src/firefoxos/BatteryProxy.js" name="Battery">
-            <runs />
-        </js-module>
-    </platform>
-	
-    <!-- browser -->
-    <platform name="browser">
-        <js-module src="src/browser/BatteryProxy.js" name="Battery">
-            <runs />
-        </js-module>
-    </platform>
+    <framework src="src/windows/BatteryStatus.winmd" custom="true" target="phone"/>
+  </platform>
+  <platform name="tizen">
+    <js-module src="src/tizen/BatteryStatusProxy.js" name="BatteryStatusProxy">
+      <runs/>
+    </js-module>
+  </platform>
+  <platform name="firefoxos">
+    <js-module src="src/firefoxos/BatteryProxy.js" name="Battery">
+      <runs/>
+    </js-module>
+  </platform>
+  <platform name="browser">
+    <js-module src="src/browser/BatteryProxy.js" name="Battery">
+      <runs/>
+    </js-module>
+  </platform>
 </plugin>
diff --git a/tests/plugin.xml b/tests/plugin.xml
index 88f691e..3b3e320 100644
--- a/tests/plugin.xml
+++ b/tests/plugin.xml
@@ -1,31 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-
-<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
-    xmlns:rim="http://www.blackberry.com/ns/widgets"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    id="cordova-plugin-battery-status-tests"
-    version="1.2.3-dev">
-    <name>Cordova Battery Plugin Tests</name>
-    <license>Apache 2.0</license>
-
-    <js-module src="tests.js" name="tests">
-    </js-module>
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:rim="http://www.blackberry.com/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" id="cordova-plugin-battery-status-tests" version="1.2.3">
+  <name>Cordova Battery Plugin Tests</name>
+  <license>Apache 2.0</license>
+  <js-module src="tests.js" name="tests"/>
 </plugin>
