Fixes #6 Fixes #1 Fixes #3