significant refactorings