make purpose a reader and add more tests for purpose
override == in SignedGlobalID to consider purpose