added uniform subroutines