Resolves #1, Resolves #8, Resolves #9