Move initialize and perform to job.

No need to define empty methods. Instead, they get default behavior
that is overridable.