functionality updated