Resolves #2
Resolves #3
Resolves #4