[update] cleaned up and documented the friend model