TODO updated based on feedback