more logging; use class protocol instead of objc protocol