added has and new behavior for put, add