remove more dead code

We control the inputs to `construct`, so the wrong type shouldn't be
passed in ever.
extract the string handling part to a method.

We know the structure passed in to the `construct` method will be a
hash, so we don't need to test it all the time.  The key value will be a
symbol or string, so handle it with the special method