never have the benefits of OO-design been so apparent :(