all protocol methods now optional