fixed lock bug, everything takes args