User callback refactor, minor reorganization, inital test case set up