Modify to use protocol