done is optional with multiple locks