Why not use the existing .NET APIs for all these?