write tests first for #17