updated based on feedback