cleaner and more complete code, better conventions too