tidying, moving methods around, more parametrization