Mobile IPv6 and NEMO BS are IETF standard mobility protocols for IPv6. It is said that freely available implementations play a big role in the deployment of new protocols. To accelerate the deployment of IPv6 mobility, we implemented the different mobility protocol stacks for the BSD operating systems. During the development, we made two different implementations based on this different design policies. The first one was an in-kernel implementation and the other a user space implementation. The former design makes it easy to use kernel information necessary for mobility operation, but it is difficult to implement and to extend features than the latter. The latter design needs to have extra mechanisms to retrieve or inject kernel information from user space, but in most cases developing user space programs is easier than developing in the kernel. In this paper, we discuss the design policies and implementation details of these two stacks.