updated routines