Added documentation, changed a few of the structs around, changed getFrame and putFrame to only accept payloads and not frames themselves. One potential problem might be clearFrame, because it can't use just the payload and stop all the memory leaks, it actually needs access to the mutex and the frame itself.