so much documentation ack ack ack