diff --git a/.gitmodules b/.gitmodules
index 6fb530f..0f6d826 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
 [submodule "test/mvt-fixtures"]
 	path = test/mvt-fixtures
 	url = https://github.com/mapbox/mvt-fixtures.git
+[submodule "bench/mvt-bench-fixtures"]
+	path = bench/mvt-bench-fixtures
+	url = https://github.com/mapbox/mvt-bench-fixtures.git
diff --git a/VectorTileCs.sln b/VectorTileCs.sln
index 50ab856..ad01399 100644
--- a/VectorTileCs.sln
+++ b/VectorTileCs.sln
@@ -15,6 +15,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Util", "src\Util\Util.cspro
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectorTiles.Tests", "src\VectorTiles.Tests\VectorTiles.Tests.csproj", "{067456C0-086C-46A8-B37F-1405717B7BFC}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bench", "src\Bench\Bench.csproj", "{5FA56C72-348A-4B52-980C-EA8287E66422}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -71,6 +73,14 @@ Global
 		{067456C0-086C-46A8-B37F-1405717B7BFC}.Release|Any CPU.Build.0 = Release|Any CPU
 		{067456C0-086C-46A8-B37F-1405717B7BFC}.Release|x64.ActiveCfg = Release|Any CPU
 		{067456C0-086C-46A8-B37F-1405717B7BFC}.Release|x64.Build.0 = Release|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Debug|x64.Build.0 = Debug|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Release|Any CPU.Build.0 = Release|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Release|x64.ActiveCfg = Release|Any CPU
+		{5FA56C72-348A-4B52-980C-EA8287E66422}.Release|x64.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/appveyor.yml b/appveyor.yml
index 9d4a30d..1891584 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -65,3 +65,4 @@ after_test:
        Add-AppveyorTest "Violation of Rule $($codeAnalysisError.CheckId): $($codeAnalysisError.TypeName) Line Number: $($issueNode.Line)" -Outcome Failed -FileName "$($issueNode.Path)\$($codeAnalysisError.Issue.File)" -ErrorMessage $($issueNode.InnerXml);
     }
     Push-AppveyorArtifact fxcop.out.xml;
+- cmd: cd bin && bench
diff --git a/bench/mvt-bench-fixtures b/bench/mvt-bench-fixtures
new file mode 160000
index 0000000..77758e8
--- /dev/null
+++ b/bench/mvt-bench-fixtures
@@ -0,0 +1 @@
+Subproject commit 77758e86720801c5fb7db7a2c578bfe137eb8872
diff --git a/src/Bench/Bench.csproj b/src/Bench/Bench.csproj
new file mode 100644
index 0000000..fc38081
--- /dev/null
+++ b/src/Bench/Bench.csproj
@@ -0,0 +1,66 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{5FA56C72-348A-4B52-980C-EA8287E66422}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Bench</RootNamespace>
+    <AssemblyName>Bench</AssemblyName>
+    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>..\..\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\VectorTileReader\VectorTileReader.csproj">
+      <Project>{4656b308-1492-4a22-a73e-06bf6aa858f2}</Project>
+      <Name>VectorTileReader</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file
diff --git a/src/Bench/Program.cs b/src/Bench/Program.cs
new file mode 100644
index 0000000..a96ccd5
--- /dev/null
+++ b/src/Bench/Program.cs
@@ -0,0 +1,140 @@
+﻿using Mapbox.VectorTile;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+
+namespace ProfileDecoding
+{
+    class Program
+    {
+        static int Main(string[] args)
+        {
+
+            //ul 14/4680/6260
+            //lr 14/4693/6274
+            ulong zoom = 14;
+            ulong minCol = 4680;
+            ulong minRow = 6260;
+            ulong maxCol = 4693;
+            ulong maxRow = 6274;
+
+            string fixturePath = Path.Combine("..", "bench", "mvt-bench-fixtures", "fixtures");
+            if (!Directory.Exists(fixturePath))
+            {
+                Console.Error.WriteLine("fixture directory not found: [{0}]", fixturePath);
+                return 1;
+            }
+
+            ulong nrOfTiles = (maxCol - minCol + 1) * (maxRow - minRow + 1);
+            List<TileData> tiles = new List<TileData>((int)nrOfTiles);
+
+            //https://a.tiles.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/13/2343/3133.vector.pbf?access_token=
+            using (GZipWebClient wc = new GZipWebClient())
+            {
+                for (ulong col = minCol; col <= maxCol; col++)
+                {
+                    for (ulong row = minRow; row <= maxRow; row++)
+                    {
+                        string fileName = string.Format("{0}-{1}-{2}.mvt", zoom, col, row);
+                        fileName = Path.Combine(fixturePath, fileName);
+                        if (!File.Exists(fileName))
+                        {
+                            Console.Error.WriteLine("fixture mvt not found: [{0}]", fileName);
+                            return 1;
+                        } else
+                        {
+                            tiles.Add(new TileData() {
+                                zoom = zoom,
+                                col = col,
+                                row = row,
+                                pbf = File.ReadAllBytes(fileName)
+                            });
+                        }
+                    }
+                }
+            }
+
+            Stopwatch stopWatch = new Stopwatch();
+            List<long> elapsed = new List<long>();
+
+            for (int i = 0; i <= 100; i++)
+            {
+                Console.Write(".");
+                stopWatch.Start();
+                foreach (var tile in tiles)
+                {
+                    VectorTileReader.Decode(tile.zoom, tile.col, tile.row, tile.pbf);
+                }
+                stopWatch.Stop();
+                //skip first run
+                if (i != 0)
+                {
+                    elapsed.Add(stopWatch.ElapsedMilliseconds);
+                }
+                stopWatch.Reset();
+            }
+
+
+            Console.WriteLine(
+               "{0}{0}runs:{1}{0}tiles per run:{2}{0}min [ms]:{3}{0}max [ms]:{4}{0}avg [ms]:{5}{0}StdDev:{6:0.00}{0}overall [ms]:{7}",
+               Environment.NewLine,
+               elapsed.Count,
+               tiles.Count,
+               elapsed.Min(),
+               elapsed.Max(),
+               elapsed.Average(),
+               StdDev(elapsed),
+               elapsed.Sum()
+               );
+
+
+            return 0;
+        }
+
+
+        private static double StdDev(List<long> values)
+        {
+            double ret = 0;
+            int count = values.Count();
+            if (count > 1)
+            {
+                //Compute the Average
+                double avg = values.Average();
+
+                //Perform the Sum of (value-avg)^2
+                double sum = values.Sum(d => (d - avg) * (d - avg));
+
+                //Put it all together
+                ret = Math.Sqrt(sum / count);
+            }
+            return ret;
+        }
+
+
+    }
+
+
+    public struct TileData
+    {
+        public ulong zoom;
+        public ulong col;
+        public ulong row;
+        public byte[] pbf;
+    }
+
+
+    public class GZipWebClient : WebClient
+    {
+        protected override WebRequest GetWebRequest(Uri address)
+        {
+            HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
+            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
+            return request;
+        }
+    }
+
+}
diff --git a/src/Bench/Properties/AssemblyInfo.cs b/src/Bench/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..c5341ea
--- /dev/null
+++ b/src/Bench/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+﻿using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ProfileDecoding")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ProfileDecoding")]
+[assembly: AssemblyCopyright("Copyright ©  2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5fa56c72-348a-4b52-980c-ea8287e66422")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/Bench/app.config b/src/Bench/app.config
new file mode 100644
index 0000000..b45f31e
--- /dev/null
+++ b/src/Bench/app.config
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup></configuration>
diff --git a/src/DemoConsoleApp/App.config b/src/DemoConsoleApp/App.config
index 8d9f953..156c225 100644
--- a/src/DemoConsoleApp/App.config
+++ b/src/DemoConsoleApp/App.config
@@ -2,5 +2,5 @@
 <configuration>
     <startup> 
         
-    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup>
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup>
 </configuration>
diff --git a/src/DemoConsoleApp/DemoConsoleApp.csproj b/src/DemoConsoleApp/DemoConsoleApp.csproj
index 3e6e1c1..2b9d1c8 100644
--- a/src/DemoConsoleApp/DemoConsoleApp.csproj
+++ b/src/DemoConsoleApp/DemoConsoleApp.csproj
@@ -9,7 +9,7 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>DemoConsoleApp</RootNamespace>
     <AssemblyName>DemoConsoleApp</AssemblyName>
-    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
     <PublishUrl>publish\</PublishUrl>
diff --git a/src/Geometry/DecodeGeometry.cs b/src/Geometry/DecodeGeometry.cs
index 3958074..3949907 100644
--- a/src/Geometry/DecodeGeometry.cs
+++ b/src/Geometry/DecodeGeometry.cs
@@ -37,7 +37,7 @@ ulong extent
             , ulong tileColumn
             , ulong tileRow
             , GeomType geomType
-            , List<UInt32> geometry
+            , List<uint> geometry
         )
         {
 
@@ -67,7 +67,8 @@ ulong extent
                             geomOut.Add(geomTmp);
                             geomTmp = new List<Point2d>();
                         }
-                        geomTmp.Add(new Point2d() { X = cursorX, Y = cursorY });
+                        Point2d pntTmp = new Point2d(cursorX, cursorY);
+                        geomTmp.Add(pntTmp);
                     }
                 }
                 if (cmd == Commands.ClosePath)
@@ -91,11 +92,10 @@ ulong extent
         private static Point2d zigzagDecode(long x, long y)
         {
 
-            return new Point2d()
-            {
-                X = ((x >> 1) ^ (-(x & 1))),
-                Y = ((y >> 1) ^ (-(y & 1)))
-            };
+            return new Point2d(
+                ((x >> 1) ^ (-(x & 1))),
+                ((y >> 1) ^ (-(y & 1)))
+            );
         }
     }
 }
diff --git a/src/Geometry/Geometry.cs b/src/Geometry/Geometry.cs
index 75847f3..205f00d 100644
--- a/src/Geometry/Geometry.cs
+++ b/src/Geometry/Geometry.cs
@@ -16,7 +16,7 @@ public enum GeomType
         POLYGON = 3
     }
 
-    public class LatLng
+    public struct LatLng
     {
         public double Lat { get; set; }
         public double Lng { get; set; }
@@ -31,9 +31,15 @@ public override string ToString()
         }
     }
 
-    public class Point2d
+    public struct Point2d
     {
 
+        public Point2d(long x, long y)
+        {
+            X = x;
+            Y = y;
+        }
+
         public long X { get; set; }
         public long Y { get; set; }
 
diff --git a/src/Geometry/Geometry.csproj b/src/Geometry/Geometry.csproj
index a1ef56b..9d39de1 100644
--- a/src/Geometry/Geometry.csproj
+++ b/src/Geometry/Geometry.csproj
@@ -21,6 +21,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -30,6 +31,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
@@ -39,6 +41,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -48,6 +51,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
diff --git a/src/PbfReader/PbfReader.cs b/src/PbfReader/PbfReader.cs
index 25e93e9..c6e5cee 100644
--- a/src/PbfReader/PbfReader.cs
+++ b/src/PbfReader/PbfReader.cs
@@ -71,15 +71,15 @@ public byte[] View()
         }
 
 
-        public List<UInt32> GetPackedUnit32()
+        public List<uint> GetPackedUnit32()
         {
-            List<UInt32> values = new List<uint>();
+            List<uint> values = new List<uint>(200);
             ulong sizeInByte = Varint();
             ulong end = Pos + sizeInByte;
             while (Pos < end)
             {
                 ulong val = Varint();
-                values.Add((UInt32)val);
+                values.Add((uint)val);
             }
             return values;
         }
@@ -153,9 +153,9 @@ public void SkipVarint()
 
         public void SkipBytes(ulong skip)
         {
-            string msg = string.Format(NumberFormatInfo.InvariantInfo, "[SkipBytes()] skip:{0} pos:{1} len:{2}", skip, Pos, _length);
             if (Pos + skip > _length)
             {
+                string msg = string.Format(NumberFormatInfo.InvariantInfo, "[SkipBytes()] skip:{0} pos:{1} len:{2}", skip, Pos, _length);
                 throw new Exception(msg);
             }
             Pos += skip;
diff --git a/src/PbfReader/PbfReader.csproj b/src/PbfReader/PbfReader.csproj
index 7e7e241..343b098 100644
--- a/src/PbfReader/PbfReader.csproj
+++ b/src/PbfReader/PbfReader.csproj
@@ -21,6 +21,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -30,6 +31,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
@@ -39,6 +41,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -48,6 +51,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
diff --git a/src/Util/Util.csproj b/src/Util/Util.csproj
index c8cc061..c770770 100644
--- a/src/Util/Util.csproj
+++ b/src/Util/Util.csproj
@@ -11,6 +11,7 @@
     <AssemblyName>Mapbox.VectorTile.Util</AssemblyName>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
     <DebugSymbols>true</DebugSymbols>
@@ -20,6 +21,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -29,6 +31,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
@@ -38,6 +41,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -47,6 +51,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
diff --git a/src/VectorTileReader/VectorTileReader.cs b/src/VectorTileReader/VectorTileReader.cs
index 7cfc678..18ccd1e 100644
--- a/src/VectorTileReader/VectorTileReader.cs
+++ b/src/VectorTileReader/VectorTileReader.cs
@@ -139,7 +139,7 @@ ulong zoom
                                                 throw new Exception("feature already has a geometry");
                                             }
                                             //get raw array of commands and coordinates
-                                            List<UInt32> geometry = featureReader.GetPackedUnit32();
+                                            List<uint> geometry = featureReader.GetPackedUnit32();
                                             //decode commands and coordinates
                                             List<List<Point2d>> geom = DecodeGeometry.GetGeometry(
                                                 layer.Extent
diff --git a/src/VectorTileReader/VectorTileReader.csproj b/src/VectorTileReader/VectorTileReader.csproj
index 5ebe3f5..4141a51 100644
--- a/src/VectorTileReader/VectorTileReader.csproj
+++ b/src/VectorTileReader/VectorTileReader.csproj
@@ -21,6 +21,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -30,6 +31,7 @@
     <PlatformTarget>x64</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
     <DebugSymbols>true</DebugSymbols>
@@ -39,6 +41,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
     <OutputPath>..\..\bin\</OutputPath>
@@ -48,6 +51,7 @@
     <PlatformTarget>AnyCPU</PlatformTarget>
     <ErrorReport>prompt</ErrorReport>
     <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
diff --git a/src/VectorTiles.Tests/TestGeometry.cs b/src/VectorTiles.Tests/TestGeometry.cs
index 120c288..290960e 100644
--- a/src/VectorTiles.Tests/TestGeometry.cs
+++ b/src/VectorTiles.Tests/TestGeometry.cs
@@ -16,7 +16,7 @@ public void GeometryObjects()
             LatLng ll = new LatLng() { Lng = 15, Lat = 48 };
             Assert.AreEqual("48.000000/15.000000", ll.ToString(), "LatLng.ToString()");
 
-            Point2d ptSE = new Point2d() { X = 4096, Y = 4096 };
+            Point2d ptSE = new Point2d(4096, 4096);
             Assert.AreEqual("4096/4096", ptSE.ToString(), "Point2d.ToString()");
 
             LatLng fromPtSE = ptSE.ToLngLat(0, 0, 0, 4096);
diff --git a/src/VectorTiles.Tests/VectorTiles.Tests.csproj b/src/VectorTiles.Tests/VectorTiles.Tests.csproj
index b08e694..f380c59 100644
--- a/src/VectorTiles.Tests/VectorTiles.Tests.csproj
+++ b/src/VectorTiles.Tests/VectorTiles.Tests.csproj
@@ -8,9 +8,10 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>VectorTiles.Tests</RootNamespace>
     <AssemblyName>VectorTiles.Tests</AssemblyName>
-    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <TargetFrameworkProfile />
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
