move some function to base target class