refactor to align as close to API as possible, using conventional .Net public names.