match is now a protocol fn