problem type factory