another class move for semantics and cohesion