Robust key fetching

An alternate solution to #32 for fixing issue #31. Instead of some implicit key matching using `zip`, this explicitly matches keys to their values. Both the current implementation and #32 do not guarantee that the correct keys get matched, which is VERY dangerous.