Changed protocols to @class_protocols and made delegate properties weak