diff --git a/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java b/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java
index 7de9366a7e9d5c734f7a32cf6babcfbe526365ce..4d7cc209527ab14eb78dcf545015d693acccdb3e 100644
--- a/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java
+++ b/src/main/java/com/comandante/creeper/bot/BotCommandFactory.java
@@ -15,6 +15,7 @@ public class BotCommandFactory {
         addCommand(new CheckNorrisBotCommand(botCommandManager));
         addCommand(new DictionaryBotCommand(botCommandManager));
         addCommand(new ImdbBotCommand(botCommandManager));
+        addCommand(new ForecastCommand(botCommandManager));
     }
 
     public BotCommand getCommand(String originalFullCmd) {
diff --git a/src/main/java/com/comandante/creeper/bot/WeatherManager.java b/src/main/java/com/comandante/creeper/bot/WeatherManager.java
index eddaf3bedb96f374d21f2c4f524f0e75988f3854..9b9b796412365fa771a014a6ff82355d147f011e 100644
--- a/src/main/java/com/comandante/creeper/bot/WeatherManager.java
+++ b/src/main/java/com/comandante/creeper/bot/WeatherManager.java
@@ -13,6 +13,8 @@ import org.apache.commons.lang.WordUtils;
 import org.apache.log4j.Logger;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 public class WeatherManager {
@@ -36,12 +38,24 @@ public class WeatherManager {
                 });
     }
 
+    public List<String> getWeatherForecast(String zipCode) throws IOException {
+        List<String> resp = Lists.newArrayList();
+        GenericUrl url = new GenericUrl("http://api.wunderground.com/api/" + creeperConfiguration.weatherUndergroundApiKey + "/forecast/q/" + zipCode + ".json");
+        HttpRequest httpRequest = requestFactory.buildGetRequest(url);
+        GenericJson content = httpRequest.execute().parseAs(GenericJson.class);
+        List<String> forecastString = getForecastString(content);
+        String s = forecastString.get(0);
+        forecastString.set(0, zipCode + ": " + s);
+        resp.addAll(forecastString);
+        return resp;
+    }
+
     public List<String> getWeather(String zipCode) throws IOException {
         List<String> resp = Lists.newArrayList();
         GenericUrl url = new GenericUrl("http://api.wunderground.com/api/" + creeperConfiguration.weatherUndergroundApiKey + "/conditions/q/" + zipCode + ".json");
         HttpRequest httpRequest = requestFactory.buildGetRequest(url);
         GenericJson content = httpRequest.execute().parseAs(GenericJson.class);
-        resp.addAll(getForecastString(content));
+        resp.addAll(getCurrentConditionsString(content));
         return resp;
     }
 
@@ -54,7 +68,44 @@ public class WeatherManager {
         return resp;
     }
 
+    public List<String> getWeatherForecast(String cityName, String state) throws IOException {
+        List<String> resp = Lists.newArrayList();
+        GenericUrl url = new GenericUrl("http://api.wunderground.com/api/" + creeperConfiguration.weatherUndergroundApiKey + "/forecast/q/" + state.toUpperCase() + "/" + convertToUrlFriendly(cityName) + ".json");
+        HttpRequest httpRequest = requestFactory.buildGetRequest(url);
+        GenericJson content = httpRequest.execute().parseAs(GenericJson.class);
+        List<String> forecastString = getForecastString(content);
+        String s = forecastString.get(0);
+        forecastString.set(0, convertToUrlFriendly(cityName) + "," + state.toUpperCase() + ": " + s);
+        resp.addAll(forecastString);
+        return resp;
+    }
+
     private List<String> getForecastString(GenericJson content) {
+        List<String> response = Lists.newArrayList();
+        StringBuilder respLin = new StringBuilder();
+        try {
+            ArrayMap forecast = (ArrayMap) content.get("forecast");
+            ArrayMap simpleforecast = (ArrayMap) forecast.get("simpleforecast");
+            ArrayList forecastday = (ArrayList) simpleforecast.get("forecastday");
+            Iterator iterator = forecastday.iterator();
+            while (iterator.hasNext()) {
+                ArrayMap day = (ArrayMap) iterator.next();
+                ArrayMap date = (ArrayMap) day.get("date");
+                ArrayMap high = (ArrayMap) day.get("high");
+                ArrayMap low = (ArrayMap) day.get("low");
+                String conditions = (String) day.get("conditions");
+                respLin.append(date.get("weekday_short")).append(" ").append((String)high.get("fahrenheit")).append("F/").append((String)low.get("fahrenheit")).append("F ").append("(").append(conditions).append(")").append(" | ");
+
+            }
+        } catch (Exception e) {
+            log.error("Error obtaining weather!", e);
+        }
+        String finalstring = respLin.toString().substring(0, respLin.toString().length() - 2);
+        response.add(finalstring);
+        return response;
+    }
+
+    private List<String> getCurrentConditionsString(GenericJson content) {
         List<String> response = Lists.newArrayList();
         try {
             ArrayMap current_observation = (ArrayMap) content.get("current_observation");
diff --git a/src/main/java/com/comandante/creeper/bot/commands/ForecastCommand.java b/src/main/java/com/comandante/creeper/bot/commands/ForecastCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..936864effb8308023a2f4e01e1f1316f56d60434
--- /dev/null
+++ b/src/main/java/com/comandante/creeper/bot/commands/ForecastCommand.java
@@ -0,0 +1,42 @@
+package com.comandante.creeper.bot.commands;
+
+import com.comandante.creeper.bot.BotCommandManager;
+import com.google.api.client.util.Lists;
+import com.google.common.collect.Sets;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+public class ForecastCommand extends BotCommand {
+
+    static Set<String> triggers = Sets.newHashSet("forecast");
+    static String helpUsage = "forecast 97034";
+    static String helpDescription = "Obtain weather forecast using a zip code or city name.";
+
+    public ForecastCommand(BotCommandManager botCommandManager) {
+        super(botCommandManager, triggers, helpUsage, helpDescription);
+    }
+
+    @Override
+    public List<String> process() {
+        ArrayList<String> resp = Lists.newArrayList();
+        String argumentString = joinArgs(args);
+        if (isNumeric(argumentString)) {
+            try {
+                resp.addAll(botCommandManager.getWeatherManager().getWeatherForecast(argumentString));
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        } else {
+            String[] split = argumentString.split(",");
+            try {
+                resp.addAll(botCommandManager.getWeatherManager().getWeatherForecast(split[0], split[1]));
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return resp;
+    }
+}
diff --git a/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java b/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java
index 507f60458e249b154ce251cdc1f740b84b62c57f..1a994c726e57d7d15e1c8ccacd70b0c852bb51d6 100644
--- a/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java
+++ b/src/main/java/com/comandante/creeper/server/CreeperAuthenticationHandler.java
@@ -14,27 +14,28 @@ public class CreeperAuthenticationHandler extends SimpleChannelUpstreamHandler {
     private final GameManager gameManager;
     private final CreeperAuthenticator creeperAuthenticator;
     private static final Logger log = Logger.getLogger(CreeperAuthenticationHandler.class);
-
-
-
-
-    private static final String LOGO = "         / \\\n\r" +
-            "        |\\_/|\n\r" +
-            "        |---|\n\r" +
-            "        |   |\n\r" +
-            "        |   |\n\r" +
-            "      _ |=-=| _\n\r" +
-            "  _  / \\|   |/ \\\n\r" +
-            " / \\|   |   |   ||\\\n\r" +
-            "|   |   |   |   | \\>\n\r" +
-            "|   |   |   |   |   \\\n\r" +
-            "| -   -   -   - |)   )\n\r" +
-            "|                   /\n\r" +
-            " \\                 /\n\r" +
-            "  \\               /\n\r" +
-            "   \\             /\n\r" +
-            "    \\           /\n\r" +
-            "     |         |\n\r";
+    private static final String LOGO = "                          /[-])//  ___\n\r" +
+            "                     __ --\\ `_/~--|  / \\\n\r" +
+            "                   /_-/~~--~~ /~~~\\\\_\\ /\\\n\r" +
+            "                   |  |___|===|_-- | \\ \\ \\\n\r" +
+            " _/~~~~~~~~|~~\\,   ---|---\\___/----|  \\/\\-\\\n\r" +
+            " ~\\________|__/   / // \\__ |  ||  / | |   | |\n\r" +
+            "          ,~-|~~~~~\\--, | \\|--|/~|||  |   | |\n\r" +
+            "          [3-|____---~~ _--'==;/ _,   |   |_|\n\r" +
+            "                      /   /\\__|_/  \\  \\__/--/\n\r" +
+            "                     /---/_\\  -___/ |  /,--|\n\r" +
+            "                     /  /\\/~--|   | |  \\///\n\r" +
+            "                    /  / |-__ \\    |/\n\r" +
+            "                   |--/ /      |-- | \\\n\r" +
+            "                  \\^~~\\\\/\\      \\   \\/- _\n\r" +
+            "                   \\    |  \\     |~~\\~~| \\\n\r" +
+            "                    \\    \\  \\     \\   \\  | \\\n\r" +
+            "                      \\    \\ |     \\   \\    \\\n\r" +
+            "                       |~~|\\/\\|     \\   \\   |\n\r" +
+            "                      |   |/         \\_--_- |\\\n\r" +
+            "                      |  /            /   |/\\/\n\r" +
+            "                       ~~             /  /\n\r" +
+            "                                     |__/\n\r";
 
     public CreeperAuthenticationHandler(GameManager gameManager) {
         this.gameManager = gameManager;