Use attributes so we don't force protocols to be loaded
Fix typos (tks @ericmj)