locking only works at decorator level