How about changing the name of type MLton.Thread.ready_t to simply MLton.Thread.ready? The _t doesn't do anything for me, plus we don't use _ in type names. I like the prep* functions. Another possible naming choice is ready*, since ready is actually a verb.