Major refactoring on the caller stuff