Completes #24.