Essentially a re-write of mi