published as PCL on nuget