I feel comfortable with this code, but definitely need to double check with @jlee-r7, mainly I always have the doubt about how to proceed when adding new APIs to mixins. Even after checking some code, I'm not sure if there is a preferred way to define return values (0 vs nil or raise exception), etc.