heavy changes, documentation soon(tm)