Fixes #2, #3 and #4