Fix #22
Fix #20
Fix #23
Fix #24
Fix #25
Fix #26
Fix #27