updated with second feedbacks