layers, object oriented stuff, a lot of other stuff