updated with correct delegate methods