diff --git a/5.0/data-defintions/news-with-images.xml b/5.0/data-defintions/news-with-images.xml
new file mode 100644
index 0000000..7113d1f
--- /dev/null
+++ b/5.0/data-defintions/news-with-images.xml
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/5.0/formats/news-with-images.vm b/5.0/formats/news-with-images.vm
new file mode 100644
index 0000000..3bbaf20
--- /dev/null
+++ b/5.0/formats/news-with-images.vm
@@ -0,0 +1,215 @@
+#macro(NewsImg)
+
+#set ($NewsImg = $_XPathTool.selectSingleNode($node, 'default/content/system-data-structure/news-with-images'))
+
+
+#set($NiAllNews = "")
+#set ($NiLinkCheck = $NewsImg.getChild("internal-external").text)
+#if ($NiLinkCheck == "Internal")
+#set ($NiAllNews = $NewsImg.getChild("view-all").getChild("link").text)
+#elseif ($NiLinkCheck == "External")
+#set ($NiAllNews = $NewsImg.getChild("external-news-page").text)
+#end
+#set ($NiHeadline = $NewsImg.getChild("headline").text)
+#set ($NiAllNewsLabel = $NewsImg.getChild("view-all-label").text)
+#set ($NewsType = $NewsImg.getChild("news-type").text)
+#set ($NewsItems = $_XPathTool.selectNodes($NewsImg, 'news-item'))
+
+
+
+
+
+ #if ($NewsType == "feed")
+ #set ($NewsFeed = $_XPathTool.selectSingleNode($NewsImg, 'news-feed'))
+ #set ($FeedCategories = $_XPathTool.selectNodes($NewsFeed, 'feed-categories/value'))
+ #set ($AdminFeedCategories = $_XPathTool.selectNodes($NewsFeed, 'admin-feed-categories/value'))
+ #set ($categoryString = "")
+
+ #if ($FeedCategories.size() > 0)
+ #foreach ($category in $FeedCategories)
+ #set ($categoryString = $categoryString + $category.value)
+ #if($foreach.hasNext)
+ #set ($categoryString = $categoryString + "|")
+ #end
+ #end
+ #end
+
+ #if ($AdminFeedCategories.size() > 0)
+ #if(!$_PropertyTool.isEmpty($categoryString))
+ #set ($categoryString = $categoryString + "|")
+ #end
+ #foreach ($category in $AdminFeedCategories)
+ #set ($categoryString = $categoryString + $category.value)
+ #if($foreach.hasNext)
+ #set ($categoryString = $categoryString + "|")
+ #end
+ #end
+ #end
+
+ #generateNewsFeed($categoryString)
+ #else
+ #foreach($NewsItem in $NewsItems)
+
+ #set ($NiDate = $NewsItem.getChild("date").text)
+ #set ($NiHeadline = $NewsItem.getChild("headline").text)
+ #set ($NiLinkText = $NewsItem.getChild("link-text").text)
+ #set ($NiLinkCheck = $NewsItem.getChild("link-type").text)
+
+ #if ($NiLinkCheck == "Internal")
+ #set ($NiLink = $NewsItem.getChild("internal-link").getChild("link").text)
+ #else
+ #set ($NiLink = $NewsItem.getChild("external-link").text)
+ #end
+
+ #set ($NiimgAlt = $NewsItem.getChild("img-alt").text)
+ #set ($NiImg = $NewsItem.getChild("image").getChild("path").text)
+
+ #if ($NiImg == "/")
+ #set ($NiImg = "https://cdn.ucsd.edu/cms/decorator-5/img/news-388x246.png")
+ #end
+
+
+ #end
+ #end
+
+
+
+
+#end
+
+#macro(generateNewsFeed $feedCategoryString)
+ #set($categoryStringReplace = $feedCategoryString.replace('|',''))
+
+
+
+
+
+
+
+ var url = "https://today.ucsd.edu/news-and-features-api?category=${feedCategoryString}&limit=3";
+
+ getData(url);
+
+ function getData(theurl) {
+ var xmlhttp = new XMLHttpRequest();
+ xmlhttp.open("GET", theurl, true);
+ xmlhttp.onload = function() {
+ if (xmlhttp.readyState == XMLHttpRequest.DONE) {
+ if (xmlhttp.status == 200) {
+ var newsData = JSON.parse(xmlhttp.responseText);
+
+ for (var index = 0; index < 3; index++) {
+ var headId = "head" + index + "-${categoryStringReplace}";
+ var imgId = "img" + index + "-${categoryStringReplace}";
+ var dateId = "date" + index + "-${categoryStringReplace}";
+ var urlId = "url" + index + "-${categoryStringReplace}";
+
+ if (newsData[index].entry_date >= 1660546800000) {
+ if (newsData[index].teaser_photo) {
+ image = newsData[index].teaser_photo;
+ var lastSegIndex = image.lastIndexOf('/');
+ var firstSeg = image.slice(0, lastSegIndex);
+ var lastSeg = image.slice(lastSegIndex)
+ var feedImage = firstSeg + '/_ucsd-feed' + lastSeg;
+ image = feedImage;
+ }
+ else {
+ image = "https://cdn.ucsd.edu/cms/decorator-5/img/news-placeholder.png";
+ }
+ } else {
+ if (newsData[index].feature_image) {
+ image = newsData[index].feature_image;
+ } else if (newsData[index].primary_photo) {
+ image = newsData[index].primary_photo;
+ } else {
+ image = "https://cdn.ucsd.edu/cms/decorator-5/img/news-placeholder.png";
+ }
+ }
+ document.getElementById(imgId).src = image;
+ document.getElementById(headId).innerText = newsData[index].title;
+ document.getElementById(dateId).innerText = timeConverter(newsData[index].entry_date);
+ var urls = document.getElementsByClassName(urlId);
+ var newsUrl = "https://today.ucsd.edu" + "/story/" + newsData[index].url_title;
+ for (var j = 0; j < urls.length; j++) {
+ urls[j].setAttribute("href", newsUrl);
+ }
+ if (newsData[index].pp_alt) {
+ document.getElementById(imgId).alt = newsData[index].pp_alt;
+ }
+ }
+ }
+ else if (xmlhttp.status == 400) {
+ console.log('Status: Error 400 returned');
+ }
+ else {
+ console.log('Status:' + xmlhttp.status);
+ }
+ }
+ };
+
+ xmlhttp.send();
+ }
+
+ function timeConverter(UNIX_timestamp){
+ var a = new Date(UNIX_timestamp);
+ var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
+ var year = a.getFullYear();
+ var month = months[a.getMonth()];
+ var date = a.getDate();
+ var hour = a.getHours();
+ var min = a.getMinutes();
+ var sec = a.getSeconds();
+ var time = month + ' ' + date + ', ' + year;
+ return time;
+ }
+
+ #protect]]>
+#end
\ No newline at end of file