factored common utilities in separate module and classes