tremendous amount of refactorings + intro/structure