finishes rule 3 *UNTESTED*