completes #16 & #18, continued with #6