I noticed a lack of proper documentation on this subject as I was messing around with BLE in the past. I made this guide to help other people out. For some reason it seems BLE hasn't quite gotten the love it deserves. Let me know if it's useful!
http://doteverything.co/blog.html