updated functioanl