Resolves #1 as suggested by @brigand
Resolves #2 as suggested by @camswords @brigand
Resolves #4 as suggested by @archangel-irk