implementing type 7