Lets not forget restrict and volatile