generic process class