version 2.1.3 * supports nested calls to with_lock
version 2.1.4 * all file operations use local variable for file handle