volatile functions revised