diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..653dfd75c238077f262308f40d77be535ec58288
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="test" value="true"/>
+			<attribute name="optional" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="target/generated-sources/annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+			<attribute name="ignore_optional_problems" value="true"/>
+			<attribute name="m2e-apt" value="true"/>
+			<attribute name="test" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000000000000000000000000000000000000..7feca82b5dcac8d6943a58610d24f880facbd786
--- /dev/null
+++ b/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>TravelAgency</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+	</natures>
+	<filteredResources>
+		<filter>
+			<id>1740642098171</id>
+			<name></name>
+			<type>30</type>
+			<matcher>
+				<id>org.eclipse.core.resources.regexFilterMatcher</id>
+				<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
+			</matcher>
+		</filter>
+	</filteredResources>
+</projectDescription>
diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..d4313d4b25e4b826b5efa4bed06fd69068761519
--- /dev/null
+++ b/.settings/org.eclipse.jdt.apt.core.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.apt.aptEnabled=false
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..3a7f4f9433d2dfee6a115e217cdc1c2589d81a56
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..14b697b7bbb0d85e8d8ee19141a2a92d9ce211be
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f747836bb0d347ff9c26e620a0780c7c84e9dbba
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,24 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>com.com1028.lab7</groupId>
+	<artifactId>TravelAgency</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>MyAgency</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.13.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-core</artifactId>
+			<version>4.8.0</version>
+		</dependency>				
+	</dependencies>
+
+</project>
\ No newline at end of file
diff --git a/src/main/java/com/com1028/travelagency/CurrencyConverter.java b/src/main/java/com/com1028/travelagency/CurrencyConverter.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e72bf413078e1d48fde11d30874f19a03175aa0
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/CurrencyConverter.java
@@ -0,0 +1,36 @@
+package com.com1028.travelagency;
+
+/**
+ * 
+ * Defines the properties and behaviour for a Currency Converter class
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public class CurrencyConverter {
+	CurrencyService service;
+	
+	public CurrencyConverter() {
+		this.service = null;
+	}
+	
+	// The CurrencyService is a dependency passed via a setter method
+	public void setCurrencyService(CurrencyService service) {
+		this.service = service;
+	}
+	
+	/**
+	 * Retrieve the new currency amount given a amount in currency 1 to be converted to currency 2
+	 *
+	 * @return currency amount
+	 */	
+	public double convertCurrency(double amount, String currency1, String currency2) {
+		double newCurrencyAmount;
+		
+		// Call the currency service to get the exchange rate between currencies 1 & 2
+		double exchangeRate = service.getExchangeRate(currency1, currency2);
+		newCurrencyAmount = amount * exchangeRate;
+		return newCurrencyAmount;
+		
+	}
+}
diff --git a/src/main/java/com/com1028/travelagency/CurrencyService.java b/src/main/java/com/com1028/travelagency/CurrencyService.java
new file mode 100644
index 0000000000000000000000000000000000000000..5908a215bc164d379ea8f85a9941a63f3fffe6e6
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/CurrencyService.java
@@ -0,0 +1,13 @@
+package com.com1028.travelagency;
+
+/**
+ * 
+ * Interface that defines the behaviour of a Currency Service
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public interface CurrencyService {
+	// This method returns the exchange rate given the names of two currencies 
+	public double getExchangeRate(String currency1, String currency2);
+}
diff --git a/src/main/java/com/com1028/travelagency/ExcursionService.java b/src/main/java/com/com1028/travelagency/ExcursionService.java
new file mode 100644
index 0000000000000000000000000000000000000000..a3c20bd3b98a7bd327f17da60027ba6bcee56672
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/ExcursionService.java
@@ -0,0 +1,15 @@
+package com.com1028.travelagency;
+
+import java.util.List;
+
+/**
+ * 
+ * Interface that defines the behaviour of an Excursion Service
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public interface ExcursionService {
+	// This method returns the list of excursions that are provided for a given city
+	public List<String> excursionList(String city);
+}
diff --git a/src/main/java/com/com1028/travelagency/TripAdvisor.java b/src/main/java/com/com1028/travelagency/TripAdvisor.java
new file mode 100644
index 0000000000000000000000000000000000000000..8652b37a36e6ea7ff8d918483fe93363073e18a4
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/TripAdvisor.java
@@ -0,0 +1,78 @@
+package com.com1028.travelagency;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 
+ * Defines the properties and behaviour for a Trip Advisor class
+ * It provides weather info and available excursions for a given city
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public class TripAdvisor {
+	ExcursionService excursionService;
+	WeatherService weatherService;
+	
+	public TripAdvisor() {
+		excursionService = null;
+		weatherService = null;
+	}
+	
+	// The excursionService is a dependency passed via a setter method
+	public void setExcursionService(ExcursionService excursionService) {
+		this.excursionService = excursionService;
+	}
+	
+	public void setWeatherService(WeatherService weatherService) {
+		this.weatherService = weatherService;
+	}
+	
+	/**
+	 * Retrieve the excursions of a given type offered in a specified city 
+	 * e.g. beach, island, historic
+	 * 
+	 * @return list of excursions
+	 */		
+	public List<String> getExcursionList(String city, String type){
+		List<String> allExcursions = new ArrayList<String>();
+		
+		// Call the excursion service to get all the excursions listed for a particular city
+		allExcursions = excursionService.excursionList(city);
+		
+		List<String> chosenExcursions = new ArrayList<String>();
+		for(String excursion: allExcursions) {
+			//Checking to see if the excursion is of the type specifies e.g. beach
+			if (excursion.toLowerCase().contains(type.toLowerCase())){
+				chosenExcursions.add(excursion);
+			}
+		}
+		return chosenExcursions;
+	}
+
+	/**
+	 * Retrieve the weather information for specified city in a specific month
+	 * 
+	 * @return the weather info as a string
+	 */	
+	public String weatherInfo(String city, Integer month) {
+		Integer temp = weatherService.predictedAverageTemperature(city, month);
+		Double rainprob = weatherService.predictedRainProbability(city, month);
+		
+		String weather = null;
+		
+		if (temp >= 21 && rainprob >= 0.5) {
+			weather = "Warm and Rainy";
+		} else if (temp >= 21 && rainprob < 0.5) {
+			weather = "Warm and Dry";
+		} else if (temp < 21 && rainprob < 0.5){
+			weather = "Cold and Dry";
+		} else {
+			weather = "Cold and Rainy";
+		}
+		
+		return weather;
+	}	
+}
+
diff --git a/src/main/java/com/com1028/travelagency/TripDatabase.java b/src/main/java/com/com1028/travelagency/TripDatabase.java
new file mode 100644
index 0000000000000000000000000000000000000000..083a27eba7a3e0dbd354ba4be159fe3314b2535b
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/TripDatabase.java
@@ -0,0 +1,16 @@
+package com.com1028.travelagency;
+
+import java.util.List;
+/**
+ * 
+ * Interface that defines the behaviour of a Trip Database Service
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public interface TripDatabase {
+	// This method returns  the total cost of a trip for a given customer ID
+	public double totalTripCost(String CustomerID);
+	// This method returns  the list of cities to be visited in order by the customer given the ID
+	public List<String> cityItinerary(String CustomerID);
+}
diff --git a/src/main/java/com/com1028/travelagency/TripManager.java b/src/main/java/com/com1028/travelagency/TripManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..219e72bc52eabd160832c2c1af77ae9cf187a8f8
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/TripManager.java
@@ -0,0 +1,48 @@
+package com.com1028.travelagency;
+
+import java.util.List;
+/**
+ * 
+ * Defines the properties and behaviour for TripManager
+ * to apply a discount to the total trip cost and get the itinerary
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+
+public class TripManager {
+	
+	private TripDatabase tripDB;
+	
+	/**
+	 * Constructor sets the trip database
+	 * TripDatabase dependency is passed via the constructor
+	 * @param tripDB 
+	 * 			The database with details on Customers' Trips
+	 */
+
+	public TripManager(TripDatabase tripDB) {
+		this.tripDB = tripDB;
+	}
+	
+	/**
+	 * Retrieve the cost of a customers trip after applying a discount
+	 * 
+	 * @return discounted cost
+	 */	
+	public double applyDiscount(int percentageDiscount, String CustomerID) {
+		double cost = tripDB.totalTripCost(CustomerID);
+		return cost - (cost *percentageDiscount/100);
+		//return 1600.00;
+	}
+	
+	/**
+	 * Retrieve the itinerary of a customer's trip given the customer id
+	 * 
+	 * @return a list of places a traveller will visit in order
+	 */		
+	public List<String> getItinerary(String CustomerID){
+		return tripDB.cityItinerary(CustomerID);
+	}
+
+}
diff --git a/src/main/java/com/com1028/travelagency/WeatherService.java b/src/main/java/com/com1028/travelagency/WeatherService.java
new file mode 100644
index 0000000000000000000000000000000000000000..2615cf6723cd6c085e46278f857642817d54edf0
--- /dev/null
+++ b/src/main/java/com/com1028/travelagency/WeatherService.java
@@ -0,0 +1,18 @@
+package com.com1028.travelagency;
+
+/**
+ * 
+ * Interface that defines the behaviour of a Weather Service
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public interface WeatherService {
+	// This method returns the predicted average temperature for a given city in a given month
+	// The month is expressed as a digit e.g. September = 9
+	public Integer predictedAverageTemperature(String city, Integer month);
+	
+	// This method returns the predicted rain probability for a given city in a given month
+	// The month is expressed as a digit e.g. September = 9	
+	public Double predictedRainProbability(String city, Integer month);
+}
diff --git a/src/test/java/com/com1028/travelagency/CurrencyConverterTest.java b/src/test/java/com/com1028/travelagency/CurrencyConverterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..9bd69eb942288a9c3fc0f04a9770252145704b85
--- /dev/null
+++ b/src/test/java/com/com1028/travelagency/CurrencyConverterTest.java
@@ -0,0 +1,46 @@
+package com.com1028.travelagency;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+/**
+ * 
+ * Tests that the CurencyConverter class is returning the correct exchange amount
+ * Annotations are used in these tests
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+@RunWith(MockitoJUnitRunner.class)
+public class CurrencyConverterTest {
+
+	// @InjectMocks annotation is used to create and inject the mock object
+	@InjectMocks
+	CurrencyConverter converter = new CurrencyConverter();
+
+	// @Mock annotation is used to create the mock object to be injected
+	@Mock
+	CurrencyService service;
+
+	@Test
+	public void testConvertCurrency() {
+		// Method chain to return 1.12 as the exchange rate between pound and euro
+		when(service.getExchangeRate("pound", "euro")).thenReturn(1.12);
+		assertEquals(1120.0, converter.convertCurrency(1000.0, "pound", "euro"), 0);
+		verify(service).getExchangeRate("pound", "euro");
+	}
+
+	@Test(expected = RuntimeException.class)
+	public void testConvertCurrencyException() {
+
+		doThrow(new RuntimeException("ExchangeRate not implemented")).when(service.getExchangeRate("pound", "euro"));
+		assertEquals(1120.0, converter.convertCurrency(1000.0, "pound", "euro"), 0);
+		verify(service).getExchangeRate("pound", "euro");
+	}
+}
\ No newline at end of file
diff --git a/src/test/java/com/com1028/travelagency/TripAdvisorTest.java b/src/test/java/com/com1028/travelagency/TripAdvisorTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..155b32f24d29741308766b3c3d33f5aafd6e5314
--- /dev/null
+++ b/src/test/java/com/com1028/travelagency/TripAdvisorTest.java
@@ -0,0 +1,74 @@
+package com.com1028.travelagency;
+
+import static org.junit.Assert.*;
+
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InOrder;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+
+/**
+ * 
+ * Tests that the TripAdvisor class is retrieving an excursion list of the required type
+ * as well as retrieving the correct weather information
+ * Annotations are used in these tests
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+@RunWith(MockitoJUnitRunner.class)
+public class TripAdvisorTest {
+
+	@InjectMocks
+	TripAdvisor tripAdvisor = new TripAdvisor();
+	
+	// @Mock annotation is used to create the mock object to be injected
+	@Mock
+	ExcursionService excursionService;
+	
+	@Mock
+	WeatherService weatherService;
+	
+	@Test
+	public void testExcursionList() {
+		String city = "Chania";
+		List<String> excursions = new ArrayList<String>();
+		excursions.add("Samaria Gorge");
+		excursions.add("Santorini Island");
+		excursions.add("Elafonisi Beach");
+		excursions.add("Gavdos Island");
+		excursions.add("Preveli Beach");
+		
+		String type = "beach";
+		List<String> beachExcursions = new ArrayList<String>();
+		beachExcursions.add("Elafonisi Beach");
+		beachExcursions.add("Preveli Beach");
+		
+		// Method chain to return the above lsit of excursions when a city "Chania" is specified
+		when(excursionService.excursionList(city)).thenReturn(excursions);
+		assertEquals(beachExcursions, tripAdvisor.getExcursionList(city, type));
+		verify(excursionService).excursionList(city);
+	}
+	
+	
+	@Test
+	public void testWeatherInfo() {
+		String city = "Chania";
+		Integer month = 9;
+		InOrder inOrder = inOrder(weatherService);
+		
+		when(weatherService.predictedAverageTemperature(city, month)).thenReturn(27);
+		when(weatherService.predictedRainProbability(city, month)).thenReturn(0.15);
+		assertEquals("Warm and Dry", tripAdvisor.weatherInfo(city, month));
+		
+		inOrder.verify(weatherService).predictedAverageTemperature(city, month);
+	    inOrder.verify(weatherService).predictedRainProbability(city, month);
+	}
+}
diff --git a/src/test/java/com/com1028/travelagency/TripManagerTest.java b/src/test/java/com/com1028/travelagency/TripManagerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b499a391f2c6c3d1327cbf5b355a98e330ec92b9
--- /dev/null
+++ b/src/test/java/com/com1028/travelagency/TripManagerTest.java
@@ -0,0 +1,88 @@
+package com.com1028.travelagency;
+
+import static org.junit.Assert.*;
+
+
+
+import static org.mockito.Mockito.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * 
+ * Tests that the TripManager class is calculating the discount correctly
+ * Also a Spy on an itinerary object is created and tested
+ * Static methods of Mockito are used
+ * 
+ * @author Mariam Cirovic
+ * 
+ */
+public class TripManagerTest {
+
+	TripManager manager;
+	
+	// Mock the Trip Database class
+	TripDatabase db = mock(TripDatabase.class);
+	
+	@Before
+	public void setUp() {
+		manager = new TripManager(db);
+	}
+	
+	@Test
+	public void testApplyDiscount() {
+		
+		// Method chain (stub) to state that the customerID c11 should return the value 2000.00
+		when(db.totalTripCost("c11")).thenReturn(2000.0);
+		assertEquals(1600.0, manager.applyDiscount(20, "c11"), 0);
+		verify(db).totalTripCost("c11");	
+		
+		when(db.totalTripCost("c20")).thenReturn(5000.0);
+		assertEquals(4000.0, manager.applyDiscount(20, "c20"), 0);
+		//assertEquals(4000.0, manager.applyDiscount(20, "c20"), 0);
+		verify(db).totalTripCost("c20");
+		
+		//check if method is called once
+	     verify(db, times(1)).totalTripCost("c20");
+	      
+	     //verify that method was never called on a mock
+	     verify(db, never()).cityItinerary("c11");
+	}
+
+	@Test
+	public void testItinerarySpy() {
+		List<String> itinerary = new ArrayList<String>();
+		
+		itinerary.add("London");
+		itinerary.add("Paris");
+		itinerary.add("Rome");		
+		
+		// Create a spy to spy on the real instance itinerary
+		List<String> itinerarySpy = spy(itinerary);
+		
+		assertEquals("London", itinerarySpy.get(0));
+		
+		// This is a stub - it states that return "Madrid" in position 1 instead of "Paris"
+		// You can use a spy to do a partial mock
+		doReturn("Madrid").when(itinerarySpy).get(1);
+		assertEquals("Madrid", itinerarySpy.get(1));
+		
+		assertEquals("Rome", itinerarySpy.get(2));
+		
+		System.out.println("Number of cities: " + itinerarySpy.size());
+		
+		// Add another city to the spy object
+		itinerarySpy.add("Athens");
+		
+		System.out.println("Number of cities (spy): " + itinerarySpy.size());
+		// The size of itinerary is unchanged - the object was only added to the spy
+		// The spy has all the behaviour of the real object so it is mostly used to 
+		// to explore legacy code that does not come with a clearly defined interface
+		System.out.println("Number of cities (original): " + itinerary.size());
+				
+	}
+}
diff --git a/target/classes/com/com1028/travelagency/CurrencyConverter.class b/target/classes/com/com1028/travelagency/CurrencyConverter.class
new file mode 100644
index 0000000000000000000000000000000000000000..7cea9855d473619b5f958ed96ff4e8cd87a7cebb
Binary files /dev/null and b/target/classes/com/com1028/travelagency/CurrencyConverter.class differ
diff --git a/target/classes/com/com1028/travelagency/CurrencyService.class b/target/classes/com/com1028/travelagency/CurrencyService.class
new file mode 100644
index 0000000000000000000000000000000000000000..42d43a4580095e287502b35a11637edb808b2216
Binary files /dev/null and b/target/classes/com/com1028/travelagency/CurrencyService.class differ
diff --git a/target/classes/com/com1028/travelagency/ExcursionService.class b/target/classes/com/com1028/travelagency/ExcursionService.class
new file mode 100644
index 0000000000000000000000000000000000000000..d741173f5f4d551a101883a70138ba7b50956110
Binary files /dev/null and b/target/classes/com/com1028/travelagency/ExcursionService.class differ
diff --git a/target/classes/com/com1028/travelagency/TripAdvisor.class b/target/classes/com/com1028/travelagency/TripAdvisor.class
new file mode 100644
index 0000000000000000000000000000000000000000..0490fec3db6176cdb408c861ffa0a4a4495a1f67
Binary files /dev/null and b/target/classes/com/com1028/travelagency/TripAdvisor.class differ
diff --git a/target/classes/com/com1028/travelagency/TripDatabase.class b/target/classes/com/com1028/travelagency/TripDatabase.class
new file mode 100644
index 0000000000000000000000000000000000000000..06d87d429c7166e3654941568988e69a5d0ea3ab
Binary files /dev/null and b/target/classes/com/com1028/travelagency/TripDatabase.class differ
diff --git a/target/classes/com/com1028/travelagency/TripManager.class b/target/classes/com/com1028/travelagency/TripManager.class
new file mode 100644
index 0000000000000000000000000000000000000000..dfabac1693ba88abd46a3429cba7da2500864648
Binary files /dev/null and b/target/classes/com/com1028/travelagency/TripManager.class differ
diff --git a/target/classes/com/com1028/travelagency/WeatherService.class b/target/classes/com/com1028/travelagency/WeatherService.class
new file mode 100644
index 0000000000000000000000000000000000000000..16bb022f9642f5bb74396dc6bf02cd53ffb1fa13
Binary files /dev/null and b/target/classes/com/com1028/travelagency/WeatherService.class differ
diff --git a/target/test-classes/com/com1028/travelagency/CurrencyConverterTest.class b/target/test-classes/com/com1028/travelagency/CurrencyConverterTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..fa53b37104fdaeec0dd829caa20241d6ee196a53
Binary files /dev/null and b/target/test-classes/com/com1028/travelagency/CurrencyConverterTest.class differ
diff --git a/target/test-classes/com/com1028/travelagency/TripAdvisorTest.class b/target/test-classes/com/com1028/travelagency/TripAdvisorTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..ab96c7e9aa16c4145e937bbb506026a8b47c3ed0
Binary files /dev/null and b/target/test-classes/com/com1028/travelagency/TripAdvisorTest.class differ
diff --git a/target/test-classes/com/com1028/travelagency/TripManagerTest.class b/target/test-classes/com/com1028/travelagency/TripManagerTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..5f4f8f0c86e398198ef902f387bb66cda482f9f5
Binary files /dev/null and b/target/test-classes/com/com1028/travelagency/TripManagerTest.class differ