added more generic routines