adding system functions