added distributed lock impl