protocol methods are optional
updated readme