Unfinished #168 - some test cases are missing and case analysis needs
second review.