fixing: #28, #27, #26, #25, #23, #22