refactored some stuff, tried implementing reload