Any recommendations or pitfalls you would like to share? Do you use an open source implementation, or a home-baked one?