trivial optimisation, refactor a few methods