base class done
modified for tests