Do these ALL need to be abstract? It seems like most of them are actually optional, and this would reduce the overhead to making a new JQJob class.