lots of oo stuff