eh... refactored some stuff