resolves #55 resolves #54 resolves #53