Reducing Free Riding In Peer-To-Peer Systems With Supervised Teaming