add some more cases...warning about nonexhaustive bindings