1. tracking per item changes
2. code refactoring