Redesigned, compiled but not tested