write documentation for it all