add protocol/delegate stuff