contains stuff that shouldn't be public
initial version