added hasDeep & valueOrDefault methods