Merge branch 'refactor-constructor' into optim