Added some basic protocols and initial implementations