needed for tf