Improved hold function