don't replace items that exist
added test
added test
added test
cache references