Better data changed listener design
cleanup
cleanup unused code