updated with modes