WIP reworked it again, still some docs to do