added new factory class