user can specify delimiter