Fixes #7, #2, Work on #4 and researching #1