permit newless constructor and refactoring