moved default logic to their own methods