Implemented enhancements #20, #23, #24