Completes #11
Completes #12