factored out Syntax.Constructor