add serveral functions