add modifications
many changes