separate kind checking from construction