Can't you just pass in a closure that takes the right arguments and returns the right things? Then you shouldn't need to care about the names? Sounds like you and the people that wrote XO and mutation operators might want to get together to settle a few things. Would 5 or 10 minutes in class tomorrow help?