ADD NSCoding & CHANGE NSCopying & ADD cache to disk