delegate and its routines