-#include "yeti_stalactite.hpp"
-#include "bouncing_snowball.hpp"
-#include "game_session.hpp"
-
-static const float JUMP_VEL1 = 250;
-static const float JUMP_VEL2 = 700;
-static const float RUN_SPEED = 350;
-static const float JUMP_TIME = 1.6;
-static const float ANGRY_JUMP_WAIT = .5;
-/// the time we are safe when tux just hit us
-static const float SAFE_TIME = .5;
-static const int INITIAL_HITPOINTS = 3;
-
-Yeti::Yeti(const lisp::Lisp& reader)
+#include "object/player.hpp"
+#include "sprite/sprite.hpp"
+#include "supertux/object_factory.hpp"
+#include "supertux/sector.hpp"
+
+#include <float.h>
+#include <math.h>
+
+namespace {
+const float JUMP_DOWN_VX = 250; /**< horizontal speed while jumping off the dais */
+const float JUMP_DOWN_VY = -250; /**< vertical speed while jumping off the dais */
+
+const float RUN_VX = 350; /**< horizontal speed while running */
+
+const float JUMP_UP_VX = 350; /**< horizontal speed while jumping on the dais */
+const float JUMP_UP_VY = -700; /**< vertical speed while jumping on the dais */
+
+const float STOMP_VY = -300; /** vertical speed while stomping on the dais */
+
+const float LEFT_STAND_X = 80; /**< x-coordinate of left dais' end position */
+const float RIGHT_STAND_X = 1280-LEFT_STAND_X-60; /**< x-coordinate of right dais' end position */
+const float LEFT_JUMP_X = LEFT_STAND_X+448; /**< x-coordinate of from where to jump on the left dais */
+const float RIGHT_JUMP_X = RIGHT_STAND_X-448; /**< x-coordinate of from where to jump on the right dais */
+const float STOMP_WAIT = .5; /**< time we stay on the dais before jumping again */
+const float SAFE_TIME = .5; /**< the time we are safe when tux just hit us */
+const int INITIAL_HITPOINTS = 5; /**< number of hits we can take */
+
+const float YETI_SQUISH_TIME = 5;
+}
+
+Yeti::Yeti(const Reader& reader) :
+ BadGuy(reader, "images/creatures/yeti/yeti.sprite"),
+ state(),
+ state_timer(),
+ safe_timer(),
+ stomp_count(),
+ hit_points(),
+ hud_head()