added NSCoding protocol  support