closed #15 closed #16 closed #17