Implement discussed improvements in #17, #18 + other improvements

Implement discussed improvements in #17, #18 + other improvements