Added optional newValueCallback parameter
Added .has(key) method