diff --git a/src/main/java/lab/Boat.java b/src/main/java/lab/Boat.java
index ceafc8c658e705d44556c73000781e6cfcae176b..574c194452833ae6804f442c94b841417fc1126f 100644
--- a/src/main/java/lab/Boat.java
+++ b/src/main/java/lab/Boat.java
@@ -1,6 +1,7 @@
 package lab;
 
 import javafx.geometry.Point2D;
+import javafx.geometry.Rectangle2D;
 import javafx.scene.canvas.GraphicsContext;
 import javafx.scene.image.Image;
 
@@ -18,9 +19,14 @@ public class Boat {
 
 	public void draw(GraphicsContext gc) {
 		gc.drawImage(image, position.getX(), position.getY());
+		gc.strokeRect(position.getX(), position.getY(), image.getWidth(), image.getHeight());
 	}
 
 	public void simulate(double deltaTime) {
 	}
 
+	public Rectangle2D getBoundingBox() {
+		return new Rectangle2D(position.getX(), position.getY(), image.getWidth(), image.getHeight());
+	}
+
 }
diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java
index ccf2018447fd23b465db160f0f853374d0aa74de..56c94df054f39bfe2dd77cfdf8a7859445824d20 100644
--- a/src/main/java/lab/DrawingThread.java
+++ b/src/main/java/lab/DrawingThread.java
@@ -10,16 +10,16 @@ public class DrawingThread extends AnimationTimer {
 	private final Canvas canvas;
 	private final GraphicsContext gc;
 	private Scene scene;
-	private long lastSecond = 0;;
 	private int frameCount = 0;
 	private  int fps = 0;
 	private long lastTime;
+	private long lastSecond = 0;
 
 	public DrawingThread(Canvas canvas) {
 		this.canvas = canvas;
 		this.gc = canvas.getGraphicsContext2D();
 		scene = new Scene(canvas.getWidth(), canvas.getHeight());
-		lastSecond = System.nanoTime();
+		lastTime = System.nanoTime();
 	}
 
 	/**
diff --git a/src/main/java/lab/LochNess.java b/src/main/java/lab/LochNess.java
new file mode 100644
index 0000000000000000000000000000000000000000..e27d7e082b6bb002fee7e99a80896ca2fec64747
--- /dev/null
+++ b/src/main/java/lab/LochNess.java
@@ -0,0 +1,50 @@
+package lab;
+
+import java.util.Random;
+
+import javafx.geometry.Point2D;
+import javafx.geometry.Rectangle2D;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.image.Image;
+
+public class LochNess {
+
+	private static final Random RANDOM = new Random();
+
+	private Scene scene;
+	private Point2D position;
+	private Point2D speed;
+	private Image image;
+
+	public LochNess(Scene scene) {
+		this.scene = scene;
+		image = new Image(LochNess.class.getResourceAsStream("LochNess.gif"));
+		position = new Point2D(RANDOM.nextDouble(scene.getSize().getWidth() * 0.3, scene.getSize().getWidth()),
+				RANDOM.nextDouble(scene.getSize().getHeight() * 0.5, scene.getSize().getHeight() - image.getHeight()));
+		speed = new Point2D(-RANDOM.nextDouble(50, 150), 0);
+	}
+
+	public void draw(GraphicsContext gc) {
+		gc.drawImage(image, position.getX(), position.getY());
+		gc.strokeRect(position.getX(), position.getY(), image.getWidth(), image.getHeight());
+	}
+
+	public void simulate(double deltaTime) {
+		position = position.add(speed.multiply(deltaTime / 1_000_000_000));
+		if (position.getX() + image.getWidth() < 0) {
+			position = new Point2D(scene.getSize().getWidth(), position.getY());
+		}
+		if (position.getX() > scene.getSize().getWidth()+5) {
+			position = new Point2D(scene.getSize().getWidth(), position.getY());
+			speed = speed.multiply(-1);
+		}
+	}
+
+	public Rectangle2D getBoundingBox() {
+		return new Rectangle2D(position.getX(), position.getY(), image.getWidth(), image.getHeight());
+	}
+
+	public void changeDirection() {
+		speed = speed.multiply(-1);
+	}
+}
diff --git a/src/main/java/lab/Rock.java b/src/main/java/lab/Rock.java
index 50c9db636a516bb58fa535d74c8cad99eb838a79..b5a1b437e6d0274ae610f585c6cd71a78ee08611 100644
--- a/src/main/java/lab/Rock.java
+++ b/src/main/java/lab/Rock.java
@@ -28,7 +28,7 @@ public class Rock {
 		gc.save();
 		gc.setFill(Color.GRAY);
 		gc.setStroke(Color.GREEN);
-		Point2D center = position.add(size.getWidth()/2, size.getHeight()/2);
+		Point2D center = position.add(size.getWidth() / 2, size.getHeight() / 2);
 		Rotate rotateMatrix = Affine.rotate(angle, center.getX(), center.getY());
 		gc.setTransform(new Affine(rotateMatrix));
 		gc.fillRect(position.getX(), position.getY(), size.getWidth(), size.getHeight());
diff --git a/src/main/java/lab/Scene.java b/src/main/java/lab/Scene.java
index 6b4a4ea2e5481474905f152d1e442371469f35b2..eaf6e258733fb24f5eb8258fa3bfb41ec9b5513b 100644
--- a/src/main/java/lab/Scene.java
+++ b/src/main/java/lab/Scene.java
@@ -10,28 +10,42 @@ public class Scene {
 	private Background background;
 	private Rock rock;
 	private Boat boat;
-	
+	private LochNess[] lochNesses;
+
 	public Scene(double width, double height) {
 		size = new Dimension2D(width, height);
 		background = new Background(this);
 		rock = new Rock(this, new Point2D(300, 300), new Dimension2D(30, 50));
 		boat = new Boat(this, new Point2D(20, 200));
+		lochNesses = new LochNess[5];
+		for (int i = 0; i < lochNesses.length; i++) {
+			lochNesses[i] = new LochNess(this);
+		}
 	}
 
 	public Dimension2D getSize() {
 		return size;
-	} 
-	
-public void draw(GraphicsContext gc) {
-	background.draw(gc);
-	rock.draw(gc);
-	boat.draw(gc);
-}
-	
+	}
+
+	public void draw(GraphicsContext gc) {
+		background.draw(gc);
+		rock.draw(gc);
+		boat.draw(gc);
+		for (LochNess lochNess : lochNesses) {
+			lochNess.draw(gc);
+		}
+	}
+
 	public void simulate(double deltaTime) {
 		background.simulate(deltaTime);
 		rock.simulate(deltaTime);
 		boat.simulate(deltaTime);
+		for (LochNess lochNess : lochNesses) {
+			lochNess.simulate(deltaTime);
+			if (lochNess.getBoundingBox().intersects(boat.getBoundingBox())) {
+				lochNess.changeDirection();
+			}
+		}
 	}
-	
+
 }
diff --git a/src/main/resources/lab/LochNess.gif b/src/main/resources/lab/LochNess.gif
new file mode 100644
index 0000000000000000000000000000000000000000..ba24b711a5a146c0410097afe8014ac0fdb75748
Binary files /dev/null and b/src/main/resources/lab/LochNess.gif differ