revised 5 and 6 briefly, still needs checking