refactors proto-constructor handling