deprecate outer constructor
minor refactor