some changes,not yet finished