remaining methods implementing protocol