implemented half of id3