fixes #1. fixes #3. fixes #4.