Switch to using real opaque types to represent opaque types from C