a more efficient OO API