add tons of documentational comments