refactored, added undefined tests
added arrays
added deep objects
added dates and error handling
added arrays