add some subroutines