Closes #11, closes #12, closes #13, closes #14; validate complex types, allow complex types hash representations.