use an abstract class to mutualize common code for shell scripts