Improve architecture; make individual callbacks private