subroutines are allowed if you so choose