adding in a new 'lockable set' function and tests