In this paper, we present HirondML, an Objective Caml library implementing migrating threads. Our library is based on a simplified implementation of the Fair Threads, a reactive threads system originally developed at INRIA. The Fair Threads scheduling policy is based on mixing cooperative and preemptive threads. We designed a thread migration system based on the cooperativeness of Fair Threads. To minimize data copying, we adopted an original rebinding policy distinguishing local variables, which are copied, from global variables, which are rebound when a migration takes place. Such a choice allows two styles of programming, by copy or by sharing. This will be illustrated by different distributed applications.