diff --git a/AboutPage.xaml b/AboutPage.xaml
index 2d7b7959ff9d675fa6f8c529645dfdefb5c5316c..ad8fcf41a534a1ad0f605af9fa89f3fdf5896a16 100644
--- a/AboutPage.xaml
+++ b/AboutPage.xaml
@@ -72,18 +72,13 @@
                                 VerticalScrollBarVisibility="Hidden">
                     <StackPanel MaxWidth="500"
                                 Width="310">
-                        <TextBlock  Text="Ring v1.1.15.0_x64"
+                        <TextBlock  Text="Ring version: 2016/12/29"
                                     TextWrapping="Wrap"
                                     TextAlignment="Justify"
                                      Margin="0,0,0,24"
                                     FontSize="12"
                                     FontWeight="Bold"
                                     HorizontalAlignment="Center"/>
-                        <TextBlock  Text="version: 2016/12/14"
-                                    TextWrapping="Wrap"
-                                    TextAlignment="Justify"
-                                    FontSize="12"
-                                    HorizontalAlignment="Center"/>
                         <TextBlock  Text="Release: Beta 2 - Gaston Miron"
                                     TextWrapping="Wrap"
                                     TextAlignment="Justify"
diff --git a/Package.appxmanifest b/Package.appxmanifest
index 59fedefae3e0652c308cfc6eba03a1a64abddea8..209ddd873accf7c3d49f63c1bce82025a345ee3a 100644
--- a/Package.appxmanifest
+++ b/Package.appxmanifest
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" IgnorableNamespaces="uap uap3 mp">
-  <Identity Name="Savoir-faireLinux.GNURing" Publisher="CN=8121A5F7-3CA1-4CAA-92B2-4F595B011941" Version="1.1.15.0" />
+  <Identity Name="Savoir-faireLinux.GNURing" Publisher="CN=8121A5F7-3CA1-4CAA-92B2-4F595B011941" Version="1.1.20.0" />
   <mp:PhoneIdentity PhoneProductId="2385953f-9019-423d-aa82-d1bbacfa258b" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
   <Properties>
     <DisplayName>GNU Ring</DisplayName>
diff --git a/RingD.cpp b/RingD.cpp
index b337db99c3bc2d27423dff635043b4a1ad50e927..477a27bb2e81ee76e9e5cd86aa496dd8de4c7984 100644
--- a/RingD.cpp
+++ b/RingD.cpp
@@ -947,6 +947,7 @@ RingD::RingD()
     localFolder_ = Utils::toString(ApplicationData::Current->LocalFolder->Path);
     callIdsList_ = ref new Vector<String^>();
     currentCallId = nullptr;
+    WriteLine("XBOX: " + isOnXBox.ToString());
 }
 
 std::string
diff --git a/RingD.h b/RingD.h
index da5038f2f2b3c618b3c9da2ecdf1f3dddd9d8c85..822ec25a403bb789cc87aeaba18c3b5079c29b59 100644
--- a/RingD.h
+++ b/RingD.h
@@ -19,6 +19,7 @@
 #include <dring.h>
 
 #include "Ringtone.h"
+#include "Utils.h"
 
 using namespace concurrency;
 
@@ -89,6 +90,16 @@ public:
         }
     }
 
+    property bool isOnXBox
+    {
+        bool get()
+        {
+            auto dev = Utils::toString(Windows::System::Profile::AnalyticsInfo::VersionInfo->DeviceFamily);
+            std::transform(dev.begin(), dev.end(), dev.begin(), ::tolower);
+            return !dev.compare("windows.xbox");
+        }
+    }
+
     property bool isInBackground;
     property StartingStatus _startingStatus;
 
diff --git a/VideoCaptureManager.cpp b/VideoCaptureManager.cpp
index e0e961f85a64ca766909248fbf9e903e12328980..2e91f6e39790bee126332706db07405db07fb24b 100644
--- a/VideoCaptureManager.cpp
+++ b/VideoCaptureManager.cpp
@@ -22,6 +22,8 @@
 #include "SmartPanel.xaml.h"
 
 #include <MemoryBuffer.h>   // IMemoryBufferByteAccess
+#include <algorithm>
+#include <chrono>
 
 using namespace RingClientUWP;
 using namespace RingClientUWP::Views;
@@ -58,7 +60,7 @@ VideoCaptureManager::VideoCaptureManager():
 })
 {
     deviceList = ref new Vector<Device^>();
-    InitializeCopyFrameDispatcher();
+    InitializeCopyFrameDispatcher(30);
     captureTaskTokenSource = new cancellation_token_source();
 }
 
@@ -358,11 +360,11 @@ VideoCaptureManager::AddVideoDeviceAsync(uint8_t index)
 }
 
 void
-VideoCaptureManager::InitializeCopyFrameDispatcher()
+VideoCaptureManager::InitializeCopyFrameDispatcher(unsigned frameRate)
 {
     try {
         TimeSpan timeSpan;
-        timeSpan.Duration = static_cast<long long>(1e7) / 30; // framerate
+        timeSpan.Duration = static_cast<long long>(1e7) / frameRate;
 
         if (videoFrameCopyInvoker != nullptr)
             delete(videoFrameCopyInvoker);
@@ -437,23 +439,10 @@ VideoCaptureManager::CopyFrameAsync()
                         byte* data;
                         unsigned capacity;
                         byteAccess->GetBuffer(&data, &capacity);
-
                         auto desc = buffer->GetPlaneDescription(0);
-
                         byte* buf = (byte*)DRing::obtainFrame(capacity);
-
-                        if (buf) {
-                            for (int row = 0; row < desc.Height; row++) {
-                                for (int col = 0; col < desc.Width; col++) {
-                                    auto currPixel = desc.StartIndex + desc.Stride * row
-                                                     + BYTES_PER_PIXEL * col;
-                                    buf[currPixel + 0] = data[currPixel + 0];
-                                    buf[currPixel + 1] = data[currPixel + 1];
-                                    buf[currPixel + 2] = data[currPixel + 2];
-                                }
-                            }
-                        }
-
+                        if (buf)
+                            std::memcpy(buf, data, static_cast<size_t>(capacity));
                         DRing::releaseFrame((void*)buf);
                     }
                     delete reference;
diff --git a/VideoCaptureManager.h b/VideoCaptureManager.h
index 32bc635a869d502b2558ebc71446bd35ef41e388..067601420dd7b8a62d60a2b583125d5c8473479f 100644
--- a/VideoCaptureManager.h
+++ b/VideoCaptureManager.h
@@ -94,7 +94,7 @@ internal:
     DispatcherTimer^ videoFrameCopyInvoker;
     task<void> CopyFrameAsync();
     void CopyFrame(Object^ sender, Object^ e);
-    void InitializeCopyFrameDispatcher();
+    void InitializeCopyFrameDispatcher(unsigned frameRate);
 
     event StartPreviewing^ startPreviewing;
     event StopPreviewing^ stopPreviewing;
diff --git a/VideoPage.xaml.cpp b/VideoPage.xaml.cpp
index 1ec2c97e62acefdb69eaaea23034de426f588aed..d513ebc7c516e7ec8e508db4fe47dd3e238b1533 100644
--- a/VideoPage.xaml.cpp
+++ b/VideoPage.xaml.cpp
@@ -361,20 +361,8 @@ VideoPage::WriteFrameAsSoftwareBitmapAsync(String^ id, uint8_t* buf, int width,
         byte* data;
         unsigned capacity;
         byteAccess->GetBuffer(&data, &capacity);
-
         auto desc = buffer->GetPlaneDescription(0);
-
-        for (int row = 0; row < desc.Height; row++)
-        {
-            for (int col = 0; col < desc.Width; col++)
-            {
-                auto currPixel = desc.StartIndex + desc.Stride * row + BYTES_PER_PIXEL * col;
-
-                data[currPixel + 0] = buf[currPixel + 0];
-                data[currPixel + 1] = buf[currPixel + 1];
-                data[currPixel + 2] = buf[currPixel + 2];
-            }
-        }
+        std::memcpy(data, buf, static_cast<size_t>(capacity));
     }
     delete reference;
     delete buffer;
diff --git a/WelcomePage.xaml b/WelcomePage.xaml
index ce280606a3b5bf3885b3e6650cd310b0e7836864..edb2b53f31713f8dd17f69a6004d1d2b2b0beddf 100644
--- a/WelcomePage.xaml
+++ b/WelcomePage.xaml
@@ -41,7 +41,7 @@
                        HorizontalAlignment="Center"
                        Margin="0 10 0 30"
                        Height="150"/>
-            <TextBlock Text="Ring is free software for universal communication wich respects the freedoms and privacy of its users."
+            <TextBlock Text="Ring is free software for universal communication which respects the freedoms and privacy of its users."
                            Foreground="#707370"
                            MaxWidth="500"
                            Width="310"
@@ -50,6 +50,10 @@
                            FontSize="12"
                            FontWeight="Bold"
                            HorizontalAlignment="Center"/>
+            <HyperlinkButton    Content="Privacy Policy"
+                                FontSize="12"
+                                NavigateUri="https://ring.cx/en/about/privacy-and-anonymity"
+                                HorizontalAlignment="Center"/>
             <Button x:Name="_aboutButton_"
                     Margin="0,48,0,0"
                     BorderThickness="0"
diff --git a/_language-fr.appx b/_language-fr.appx
index 031c4df266ce7edcf453f745c33e0964793301e5..e746d12fb16dffb904cd71b667db035b955953a2 100644
Binary files a/_language-fr.appx and b/_language-fr.appx differ
diff --git a/_scale-100.appx b/_scale-100.appx
index f1a2d01666bb727d4c4de62593830d5c56639c78..e5105619d48fbbca8f50d68553f2cdf40df24ab3 100644
Binary files a/_scale-100.appx and b/_scale-100.appx differ
diff --git a/_scale-125.appx b/_scale-125.appx
index ffc069be9977f05eb313024bfeaa5a2a4671cc11..14f6ca91f010d745c58dfe653887beacf706f54f 100644
Binary files a/_scale-125.appx and b/_scale-125.appx differ
diff --git a/_scale-150.appx b/_scale-150.appx
index db75963bfbffdbacb116598fcc2172b743cc5ea8..a0ae140e3579481032563623d5c1e1e88351af90 100644
Binary files a/_scale-150.appx and b/_scale-150.appx differ
diff --git a/_scale-400.appx b/_scale-400.appx
index e6aa98e376ead9f5e7e0811b7d7f2648731b2226..1bfdeab51a14996f145c4c910104b4bfb4e7427e 100644
Binary files a/_scale-400.appx and b/_scale-400.appx differ
diff --git a/ring-client-uwp.sln b/ring-client-uwp.sln
index b3b09cb0dead4de1e7e850c651ef3e05e0b9bc3c..181264fe1a544ab22057ba13fe7c8f9712c813ab 100644
--- a/ring-client-uwp.sln
+++ b/ring-client-uwp.sln
@@ -4,9 +4,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
 VisualStudioVersion = 14.0.25420.1
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-client-uwp", "ring-client-uwp.vcxproj", "{90928671-346F-42E4-934F-7A7A512A2D11}"
-	ProjectSection(ProjectDependencies) = postProject
-		{79F8DE42-595D-49D9-A66F-55244FD9DCC3} = {79F8DE42-595D-49D9-A66F-55244FD9DCC3}
-	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ring-daemon", "..\ring-daemon\MSVC\ring-daemon.vcxproj", "{79F8DE42-595D-49D9-A66F-55244FD9DCC3}"
 EndProject