add some funcation