#4 and refeactorings