add a debugger to play with the code.
rename factories to match our standards.