closed #17 closed #18 closed #19