implement version set