adding protocol stuff