add some base functions