Raw pointers replaced with std::unique_ptr; JobFactory eirarchy is shrinked to static method