first cut at .NET integration