diff --git a/CMakeLists.txt b/CMakeLists.txt
deleted file mode 100644
index 8cb3c6082d8004c30a687f1214c70ec21b730bb5..0000000000000000000000000000000000000000
--- a/CMakeLists.txt
+++ /dev/null
@@ -1,201 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(socrates_workshop)
-
-## Compile as C++11, supported in ROS Kinetic and newer
-# add_compile_options(-std=c++11)
-
-## Find catkin macros and libraries
-## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
-## is used, also find other catkin packages
-find_package(catkin REQUIRED COMPONENTS
-  roscpp
-  rospy
-  std_msgs
-  message_generation
-)
-
-## System dependencies are found with CMake's conventions
-# find_package(Boost REQUIRED COMPONENTS system)
-
-
-## Uncomment this if the package has a setup.py. This macro ensures
-## modules and global scripts declared therein get installed
-## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
-# catkin_python_setup()
-
-################################################
-## Declare ROS messages, services and actions ##
-################################################
-
-## To declare and build messages, services or actions from within this
-## package, follow these steps:
-## * Let MSG_DEP_SET be the set of packages whose message types you use in
-##   your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
-## * In the file package.xml:
-##   * add a build_depend tag for "message_generation"
-##   * add a build_depend and a run_depend tag for each package in MSG_DEP_SET
-##   * If MSG_DEP_SET isn't empty the following dependency has been pulled in
-##     but can be declared for certainty nonetheless:
-##     * add a run_depend tag for "message_runtime"
-## * In this file (CMakeLists.txt):
-##   * add "message_generation" and every package in MSG_DEP_SET to
-##     find_package(catkin REQUIRED COMPONENTS ...)
-##   * add "message_runtime" and every package in MSG_DEP_SET to
-##     catkin_package(CATKIN_DEPENDS ...)
-##   * uncomment the add_*_files sections below as needed
-##     and list every .msg/.srv/.action file to be processed
-##   * uncomment the generate_messages entry below
-##   * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)
-
-## Generate messages in the 'msg' folder
-add_message_files(
-#   FILES
-#   Message1.msg
-#   Message2.msg
-)
-
-## Generate services in the 'srv' folder
-add_service_files(
-  FILES
-  MiniMax.srv
-  IntInt.srv
-  Board.srv
-)
-
-## Generate actions in the 'action' folder
-# add_action_files(
-#   FILES
-#   Action1.action
-#   Action2.action
-# )
-
-## Generate added messages and services with any dependencies listed here
-generate_messages(
-  DEPENDENCIES
-  std_msgs
-)
-
-################################################
-## Declare ROS dynamic reconfigure parameters ##
-################################################
-
-## To declare and build dynamic reconfigure parameters within this
-## package, follow these steps:
-## * In the file package.xml:
-##   * add a build_depend and a run_depend tag for "dynamic_reconfigure"
-## * In this file (CMakeLists.txt):
-##   * add "dynamic_reconfigure" to
-##     find_package(catkin REQUIRED COMPONENTS ...)
-##   * uncomment the "generate_dynamic_reconfigure_options" section below
-##     and list every .cfg file to be processed
-
-## Generate dynamic reconfigure parameters in the 'cfg' folder
-# generate_dynamic_reconfigure_options(
-#   cfg/DynReconf1.cfg
-#   cfg/DynReconf2.cfg
-# )
-
-###################################
-## catkin specific configuration ##
-###################################
-## The catkin_package macro generates cmake config files for your package
-## Declare things to be passed to dependent projects
-## INCLUDE_DIRS: uncomment this if you package contains header files
-## LIBRARIES: libraries you create in this project that dependent projects also need
-## CATKIN_DEPENDS: catkin_packages dependent projects also need
-## DEPENDS: system dependencies of this project that dependent projects also need
-catkin_package(
-#  INCLUDE_DIRS include
-#  LIBRARIES socrates_workshop
- CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
-#  DEPENDS system_lib
-)
-
-###########
-## Build ##
-###########
-
-## Specify additional locations of header files
-## Your package locations should be listed before other locations
-include_directories(
-# include
-  ${catkin_INCLUDE_DIRS}
-)
-
-## Declare a C++ library
-# add_library(${PROJECT_NAME}
-#   src/${PROJECT_NAME}/socrates_workshop.cpp
-# )
-
-## Add cmake target dependencies of the library
-## as an example, code may need to be generated before libraries
-## either from message generation or dynamic reconfigure
-# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
-
-## Declare a C++ executable
-## With catkin_make all packages are built within a single CMake context
-## The recommended prefix ensures that target names across packages don't collide
-# add_executable(${PROJECT_NAME}_node src/socrates_workshop_node.cpp)
-
-## Rename C++ executable without prefix
-## The above recommended prefix causes long target names, the following renames the
-## target back to the shorter version for ease of user use
-## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
-# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
-
-## Add cmake target dependencies of the executable
-## same as for the library above
-# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
-
-## Specify libraries to link a library or executable target against
-# target_link_libraries(${PROJECT_NAME}_node
-#   ${catkin_LIBRARIES}
-# )
-
-#############
-## Install ##
-#############
-
-# all install targets should use catkin DESTINATION variables
-# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html
-
-## Mark executable scripts (Python etc.) for installation
-## in contrast to setup.py, you can choose the destination
-# install(PROGRAMS
-#   scripts/my_python_script
-#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
-# )
-
-## Mark executables and/or libraries for installation
-# install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_node
-#   ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
-#   LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
-#   RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
-# )
-
-## Mark cpp header files for installation
-# install(DIRECTORY include/${PROJECT_NAME}/
-#   DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
-#   FILES_MATCHING PATTERN "*.h"
-#   PATTERN ".svn" EXCLUDE
-# )
-
-## Mark other files for installation (e.g. launch and bag files, etc.)
-# install(FILES
-#   # myfile1
-#   # myfile2
-#   DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
-# )
-
-#############
-## Testing ##
-#############
-
-## Add gtest based cpp test target and link libraries
-# catkin_add_gtest(${PROJECT_NAME}-test test/test_socrates_workshop.cpp)
-# if(TARGET ${PROJECT_NAME}-test)
-#   target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
-# endif()
-
-## Add folders to be run by python nosetests
-# catkin_add_nosetests(test)
diff --git a/launch/tic_tac_toe.launch b/launch/tic_tac_toe.launch
deleted file mode 100644
index a80850177a54289be7dcb53b5cd7c7ac5e2ad39d..0000000000000000000000000000000000000000
--- a/launch/tic_tac_toe.launch
+++ /dev/null
@@ -1,27 +0,0 @@
-<launch>
-	<param name="application_name"			value="tic_tac_toe" 			type="string" />
-	<param name="topic_minimax_service" 		value="call_minimax" 			type="string" />	
-	<param name="topic_perform_robot_action" 	value="perform_action" 			type="string" />
-	<param name="topic_difficulty" 			value="set_difficulty" 				type="string" />
-	<param name="topic_ask_help" 				value="help_user" 				type="string" />
-	<param name="topic_board_state" 			value="board_state" 			type="string" />
-	<param name="topic_gripper_callback" 		value="gripper_action_callback" 	type="string" />
-	<param name="topic_gripper_action" 		value="gripper_action" 			type="string" />
-
-	<param name="param_difficulty" 			value="1" 					type="int" />
-	<param name="param_difficulty_min" 		value="1" 					type="int" />
-	<param name="param_difficulty_max" 		value="4" 					type="int" />
-
-	<param name="param_human_player_id" 		value="1" 					type="int" />
-	<param name="param_ai_player_id" 			value="-1" 					type="int" />
-
-	<node name="node_minimax_server" 			pkg="socrates_workshop" 			type="node_minimax.py" />
-	<node name="node_main" 					pkg="socrates_workshop" 			type="node_main.py" />
-	<node name="node_difficulty" 				pkg="socrates_workshop" 			type="node_difficulty.py" />
-	<node name="node_human_helper" 			pkg="socrates_workshop" 			type="node_human_helper.py" />
-</launch>
-
-
-<!--
-	<param name="" value="" type="" />
--->
diff --git a/package.xml b/package.xml
deleted file mode 100644
index 980d2d6049df28dfd1917856dbb911099601064f..0000000000000000000000000000000000000000
--- a/package.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<package>
-  <name>socrates_workshop</name>
-  <version>0.0.2</version>
-  <description>The socrates_workshop package</description>
-
-  <!-- One maintainer tag required, multiple allowed, one person per tag -->
-  <!-- Example:  -->
-  <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
-  <maintainer email="michelep@cs.umu.se">michele</maintainer>
-
-
-  <!-- One license tag required, multiple allowed, one license per tag -->
-  <!-- Commonly used license strings: -->
-  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
-  <license>TODO</license>
-
-
-  <!-- Url tags are optional, but multiple are allowed, one per tag -->
-  <!-- Optional attribute type can be: website, bugtracker, or repository -->
-  <!-- Example: -->
-  <!-- <url type="website">http://wiki.ros.org/socrates_workshop</url> -->
-
-
-  <!-- Author tags are optional, multiple are allowed, one per tag -->
-  <!-- Authors do not have to be maintainers, but could be -->
-  <!-- Example: -->
-  <!-- <author email="jane.doe@example.com">Jane Doe</author> -->
-
-
-  <!-- The *_depend tags are used to specify dependencies -->
-  <!-- Dependencies can be catkin packages or system dependencies -->
-  <!-- Examples: -->
-  <!-- Use build_depend for packages you need at compile time: -->
-  <!--   <build_depend>message_generation</build_depend> -->
-  <!-- Use buildtool_depend for build tool packages: -->
-  <!--   <buildtool_depend>catkin</buildtool_depend> -->
-  <!-- Use run_depend for packages you need at runtime: -->
-  <!--   <run_depend>message_runtime</run_depend> -->
-  <!-- Use test_depend for packages you need only for testing: -->
-  <!--   <test_depend>gtest</test_depend> -->
-  <buildtool_depend>catkin</buildtool_depend>
-  <build_depend>roscpp</build_depend>
-  <build_depend>rospy</build_depend>
-  <build_depend>std_msgs</build_depend>
-  <build_depend>message_generation</build_depend>
-
-  <build_depend>sensor_msgs</build_depend>
-  <build_depend>opencv2</build_depend>
-  <build_depend>cv_bridge</build_depend>
-
-  <run_depend>roscpp</run_depend>
-  <run_depend>rospy</run_depend>
-  <run_depend>std_msgs</run_depend>
-  <run_depend>message_runtime</run_depend>
-
-  <run_depend>sensor_msgs</run_depend>
-  <run_depend>opencv2</run_depend>
-  <run_depend>cv_bridge</run_depend>
-
-  <!-- The export tag contains other, unspecified, tags -->
-  <export>
-    <!-- Other tools can request additional information be placed here -->
-
-  </export>
-</package>
diff --git a/scripts/node_difficulty.py b/scripts/node_difficulty.py
deleted file mode 100755
index a59f7eb23e0500166b733a1f75993ec4d5eacbe7..0000000000000000000000000000000000000000
--- a/scripts/node_difficulty.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-import rospy
-import tic_tac_toe_common as ttt
-
-from std_msgs.msg import Int16
-from socrates_workshop.srv import *
-
-NODE_NAME = "node_difficulty"
-
-
-PARAM_DIFFICULTY = "param_difficulty"
-PARAM_DIFFICULTY_MIN = "param_difficulty_min"
-PARAM_DIFFICULTY_MAX = "param_difficulty_max"
-
-TOPIC_DIFFICULTY = "topic_difficulty"
-
-
-def setCurrentDifficulty(value):
-
-	min_diff = rospy.get_param(PARAM_DIFFICULTY_MIN)
-	max_diff = rospy.get_param(PARAM_DIFFICULTY_MAX)
-	
-	value = max(min_diff, min(value, max_diff))	
-
-	rospy.set_param(PARAM_DIFFICULTY, value)
-	return value
-
-def difficultyCallback(msg):
-	value = msg.data
-
-	value = setCurrentDifficulty(value)
-
-	return IntIntResponse(value)
-    
-def init_this_node():
-
-	rospy.init_node(NODE_NAME, anonymous=True)
-	
-
-	s = rospy.Service(ttt.concatTopicName(TOPIC_DIFFICULTY), IntInt, difficultyCallback)
-	
-
-	rospy.spin()
-
-if __name__ == '__main__':
-    init_this_node()
diff --git a/scripts/node_human_helper.py b/scripts/node_human_helper.py
deleted file mode 100755
index 81e612ce3d954fc1039c8c2926f9668d32a63dcd..0000000000000000000000000000000000000000
--- a/scripts/node_human_helper.py
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env python
-import rospy
-import tic_tac_toe_common as ttt
-from std_msgs.msg import *
-
-from socrates_workshop.srv import MiniMax, Board, IntInt
-
-NODE_NAME = "node_main"
-
-
-TOPIC_ASK_HELP		 	= "topic_ask_help"
-TOPIC_BOARD_STATE	 	= "topic_board_state"
-TOPIC_MINIMAX		 	= "topic_minimax_service"
-TOPIC_DIFFICULTY 		= "topic_difficulty"
-
-TOPIC_ACTION_CALLBACK	 = "topic_gripper_callback"
-
-
-this = sys.modules[__name__]
-
-this.board_service_proxy 	= None
-this.minimax_service_proxy 	= None
-this.gripper_subscriber		= None
-this.difficulty_service_proxy = None
-
-
-
-def helpUser(nextAction, board):
-	rospy.loginfo("I suggest action %s for board %s", nextAction, board)
-
-def helpCallback(msg):
-	id_human = ttt.getUserId()
-	id_ai = ttt.getAiId()
-
-	msg_board = this.board_service_proxy(id_human, id_ai)
-
-	depth = 10
-	msg_action = this.minimax_service_proxy(msg_board.board, depth, id_human, id_ai)
-
-	helpUser(msg_action.action, msg_board.board)
-
-
-"""
-Callback function for the gripper movement
-Depending of current difficulty we execute different routines
-"""
-def callbackGripperActionExecuted(msg):
-	success = msg.data
-
-	# We query the current difficulty level
-	msg_difficulty = this.difficulty_service_proxy(0)
-	difficulty = msg_difficulty.data
-
-	if difficulty == 1:
-		helpCallback(None)
-
-	if difficulty == 4:
-		# countdown
-		pass
-	
-    
-def init_this_node():
-
-	rospy.init_node(NODE_NAME, anonymous=True)
-
-	topic = ttt.concatTopicName(TOPIC_ASK_HELP)
-	s = rospy.Subscriber(topic, Empty, helpCallback)
-
-	topic = ttt.concatTopicName(TOPIC_BOARD_STATE)
-	this.board_service_proxy = rospy.ServiceProxy(topic, Board)
-
-	topic = ttt.concatTopicName(TOPIC_MINIMAX)
-	this.minimax_service_proxy = rospy.ServiceProxy(topic, MiniMax)
-
-
-
-	# Difficulty service to query the current level of difficulty
-	topic = ttt.concatTopicName(TOPIC_DIFFICULTY)
-	this.difficulty_service_proxy = rospy.ServiceProxy(topic, IntInt)
-
-	# Subscriber on the gripper callback invoked each time the gipper concludes an action
-	topic = ttt.concatTopicName(TOPIC_ACTION_CALLBACK)
-	this.gripper_subscriber = rospy.Subscriber(topic, Bool, callbackGripperActionExecuted)
-
-
-	rospy.spin()
-
-if __name__ == '__main__':
-	init_this_node()
diff --git a/scripts/node_main.py b/scripts/node_main.py
deleted file mode 100755
index 0ee7ecfbb5643ca9361dcb9183acbda84a3abcb6..0000000000000000000000000000000000000000
--- a/scripts/node_main.py
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env python
-import rospy
-import tic_tac_toe_common as ttt
-from std_msgs.msg import *
-from std_srvs.srv import *
-from socrates_workshop.srv import *
-
-NODE_NAME = "node_main"
-
-
-TOPIC_BOARD_STATE 		= "topic_board_state"
-TOPIC_PERFORM_ACTION 	= "topic_perform_robot_action"
-TOPIC_MINIMAX 			= "topic_minimax_service"
-
-TOPIC_ACTION_CALLBACK 	= "topic_gripper_callback"
-TOPIC_GRIPPER_ACTION 	= "topic_gripper_action"
-
-
-this = sys.modules[__name__]
-
-# Services
-this.action_service			= None
-
-# Service proxies
-this.board_service_proxy 	= None
-this.minimax_service_proxy 	= None
-
-this.gripper_action_publisher = None
-
-# Other variables
-this.gripper_moving 		= False
-
-
-"""
-Helper function to call the minimax service
-"""
-def callMinimax():
-	id_h = ttt.getUserId()
-	id_ai = ttt.getAiId()
-
-	resp = this.board_service_proxy(id_h,id_ai)
-	current_state = resp.board
-
-	depth = 10
-	resp = this.minimax_service_proxy(current_state, depth, id_ai, id_h)
-
-	return resp.action
-
-
-"""
-Callback function for the gripper movement
-"""
-def callbackGripperActionExecuted(msg):
-	success = msg.data
-
-	# The gripper stopped moving
-	this.gripper_moving = False
-	
-
-"""
-Invoked each time service on TOPIC_PERFORM_ACTION is called
-
-"""
-def actionCallback(msg):
-
-	# If gripper is still performing the previous action 
-	# we do nothing
-	if this.gripper_moving:
-		pass
-
-	else:
-		# We set the gripper as moving
-		this.gripper_moving = True
-
-		# We find the correct action to perform
-		action = callMinimax()
-
-		# The action id (between 1 and 9) is published
-		# for the gripper node
-		this.gripper_action_publisher.publish(action)
-
-	return EmptyResponse()
-
-    
-def init_this_node():
-
-	rospy.init_node(NODE_NAME, anonymous=True)
-	
-	# Service that provides the action execution
-	topic = ttt.concatTopicName(TOPIC_PERFORM_ACTION)
-	this.action_service = rospy.Service(topic, Empty, actionCallback)
-
-	# Board service to query the state of the board
-	topic = ttt.concatTopicName(TOPIC_BOARD_STATE)
-	this.board_service_proxy = rospy.ServiceProxy(topic, Board)
-
-	# Minimax service
-	topic = ttt.concatTopicName(TOPIC_MINIMAX)
-	this.minimax_service_proxy = rospy.ServiceProxy(topic, MiniMax)
-
-	# We will publish on the gripper topic the action to execute (actions have ids 1 to 9)
-	topic = ttt.concatTopicName(TOPIC_GRIPPER_ACTION)
-	this.gripper_action_publisher = rospy.Publisher(topic, Int16, queue_size=10)
-
-
-	# Subscriber on the gripper callback invoked each time the gipper concludes an action
-	topic = ttt.concatTopicName(TOPIC_ACTION_CALLBACK)
-	this.gripper_subscriber = rospy.Subscriber(topic, Bool, callbackGripperActionExecuted)
-
-	rospy.spin()
-
-if __name__ == '__main__':
-	init_this_node()
diff --git a/scripts/node_minimax.py b/scripts/node_minimax.py
deleted file mode 100755
index 49b8aa5c64e8bfae92b7348100b17046d1e0121c..0000000000000000000000000000000000000000
--- a/scripts/node_minimax.py
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/usr/bin/env python
-import rospy
-import tic_tac_toe_common as ttt
-
-from socrates_workshop.srv import *
-
-Inf = +999999
-
-NODE_NAME = 'minimax_server'
-
-
-TOPIC_MINIMAX = "topic_minimax_service"
-
-
-
-def h1(s, player, indeces):
-	return all([s[i] == player for i in indeces])
-
-def h2(s,p):
-	return h1(s,p,[0,1,2]) or h1(s,p,[3,4,5]) or h1(s,p,[6,7,8]) or h1(s,p,[0,3,6]) or h1(s,p,[1,4,7]) or h1(s,p,[2,5,8]) or h1(s,p,[0,4,8]) or h1(s,p,[2,4,6])
-
-
-def getOpponent(player, p1, p2):
-	if player == p1:
-		return p2
-	if player == p2:
-		return p1
-	return 0
-
-def getHeuristicValue(s, player, p1, p2):
-	opp = getOpponent(player, p1, p2)
-	return 10*h2(s, player) + sum(1 for x in range(len(s)) if s[x] == 0) - 10 * h2(s, opp)
-
-
-def isTerminal(s, player, p1, p2):
-	opp = getOpponent(player, p1, p2)
-	return all([cell != 0 for cell in s]) or h2(s, player) or h2(s, opp)
-
-def possibleActions(s, player):
-	return [x+1 for x in range(len(s)) if s[x] == 0]
-
-
-def executeAction(s, action, player):
-	s[action-1] = player
-	return s
-
-def minimax(state, player, p1, p2, depth):
-	selectedAction = None
-	opp = getOpponent(player, p1, p2)
-
-	if isTerminal(state, player, p1, p2) or depth == 0:
-		h = getHeuristicValue(state, p1, p1, p2)
-		return [h, selectedAction]
-
-	if player == p1:
-		alpha = -Inf
-		for action in possibleActions(state, player):
-			s1 = executeAction([x for x in state], action, player)
-			childScore = minimax(s1, opp, p1, p2, depth - 1)[0]
-			if childScore > alpha:
-				alpha = childScore
-				selectedAction = action
-	else:
-		alpha = Inf
-		for action in possibleActions(state, player):
-			s1 = executeAction([x for x in state], action, player)
-			childScore = minimax(s1, opp, p1, p2, depth - 1)[0]
-			if childScore < alpha:
-				alpha = childScore
-				selectedAction = action
-
-	return [alpha, selectedAction]
-
-def handleComputeMiniMax(req):
-	cells = [x for x in req.board]
-	depth = req.max_depth
-	p1 = req.id_player
-	p2 = req.id_opponent
-
-	alpha, selectedAction = minimax(cells, p1, p1, p2, depth)
-
-	return MiniMaxResponse(selectedAction)
-
-def minimaxServer():
-	rospy.init_node(NODE_NAME)
-
-	s = rospy.Service(ttt.concatTopicName(TOPIC_MINIMAX), MiniMax, handleComputeMiniMax)
-	rospy.spin()
-
-if __name__ == "__main__":
-	minimaxServer()
diff --git a/scripts/tic_tac_toe.py b/scripts/tic_tac_toe.py
deleted file mode 100755
index 82b486ab0798e2ef385c59e6cdc21f2a9994bde0..0000000000000000000000000000000000000000
--- a/scripts/tic_tac_toe.py
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/usr/bin/env python
-
-import rospy
-import os
-import tic_tac_toe_common as ttt
-
-from socrates_workshop.srv import *
-from std_msgs.msg import Bool, Int16
-from std_srvs.srv import Empty
-
-
-
-TOPIC_BOARD_STATE = "topic_board_state"
-TOPIC_PERFORM_ACTION = "topic_perform_robot_action"
-
-TOPIC_GRIPPER_ACTION = "topic_gripper_action"
-TOPIC_ACTION_CALLBACK = "topic_gripper_callback"
-
-clearTerminal = lambda: os.system('clear')
-
-this = sys.modules[__name__]
-
-this.callback_publisher = None
-this.robot_action_proxy = None
-
-this.refreshing = False
-this.board = [0,0,0,0,0,0,0,0,0]
-this.last_move = 0
-
-def h1(s, player, indeces):
-	return all([s[i] == player for i in indeces])
-
-def h2(s,p):
-	return h1(s,p,[0,1,2]) or h1(s,p,[3,4,5]) or h1(s,p,[6,7,8]) or h1(s,p,[0,3,6]) or h1(s,p,[1,4,7]) or h1(s,p,[2,5,8]) or h1(s,p,[0,4,8]) or h1(s,p,[2,4,6])
-
-def gameFinished():
-
-	id_human = ttt.getUserId()
-	id_ai = ttt.getAiId()
-	indeces = [0,1,2,3,4,5,6,7,8]
-
-	s = this.board
-	
-	if h2(s, id_human) or h2(s, id_ai) or all( [s[i] != 0 for i in indeces] ):
-		return True
-	else:
-		return False
-	
-
-def newGame():
-	this.board = [0,0,0,0,0,0,0,0,0]
-	this.last_move = 0
-	return this.board
-
-def getPiece(p):
-	if p == 0:
-		return ' '
-	elif p == 1:
-		return 'X'
-	else:
-		return 'O'
-
-
-def refreshView():
-	if not this.refreshing:
-		this.refreshing = True
-		s = this.board
-		clearTerminal()
-		print "let's play tic tac toe!!"
-		print " %s | %s | %s" % (getPiece(s[0]), getPiece(s[1]), getPiece(s[2])) 
-		print "-----------"
-		print " %s | %s | %s" % (getPiece(s[3]), getPiece(s[4]), getPiece(s[5])) 
-		print "-----------"
-		print " %s | %s | %s" % (getPiece(s[6]), getPiece(s[7]), getPiece(s[8])) 
-		print "Enter your desired piece position in range [1..9]"
-		this.refreshing = False
-
-
-def setPiece(player, position):
-	if this.board[position-1] != 0:
-		return False
-	this.board[position-1] = player
-	this.last_move = player
-	if gameFinished():
-		newGame()
-
-	refreshView()
-	return True
-
-def callbackBoardRequest(req):
-	return BoardResponse(this.board)
-
-def callbackOnGripperAction(msg):
-	action = msg.data
-	setPiece(ttt.getAiId(), action)
-	this.callback_publisher.publish(True)
-	
-
-def tic_tac_toe_node():
-	rospy.init_node("tic_tac_toe")
-
-
-	id_human = ttt.getUserId()
-
-	exit = False
-
-	topic = ttt.concatTopicName(TOPIC_BOARD_STATE)
-	s = rospy.Service(topic, Board, callbackBoardRequest)
-
-	topic = ttt.concatTopicName(TOPIC_GRIPPER_ACTION)
-	s = rospy.Subscriber(topic, Int16, callbackOnGripperAction)
-
-	topic = ttt.concatTopicName(TOPIC_ACTION_CALLBACK)
-	this.callback_publisher = rospy.Publisher(topic, Bool, queue_size=10)
-
-	topic = ttt.concatTopicName(TOPIC_PERFORM_ACTION)
-	this.robot_action_proxy = rospy.ServiceProxy(topic, Empty)
-
-
-	clearTerminal()
-	newGame()
-	while not rospy.is_shutdown() and not exit:
-		refreshView()
-		while this.last_move == id_human:
-			pass
-		user_input = input()
-
-		if user_input not in range(1, 10):
-			exit = True
-
-		if setPiece(id_human, user_input):
-			this.robot_action_proxy()
-
-	print exit
-		
-
-if __name__ == "__main__":
-	tic_tac_toe_node()
diff --git a/scripts/tic_tac_toe_common.py b/scripts/tic_tac_toe_common.py
deleted file mode 100644
index d00d7b6fe2b8215c925a460e70d67d05374671b8..0000000000000000000000000000000000000000
--- a/scripts/tic_tac_toe_common.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-
-import rospy
-
-from std_srvs.srv import Empty
-
-PARAM_APPLICATION_NAME = "application_name"
-
-
-PARAM_USER_ID = "param_human_player_id"
-PARAM_AI_ID = "param_ai_player_id"
-
-
-def getApplicationName():
-	return rospy.get_param(PARAM_APPLICATION_NAME)
-
-
-def concatTopicName(topicNameParam):
-	application_name  = getApplicationName()
-
-	topic_name = rospy.get_param(topicNameParam)
-	topic_name = application_name + "/" + topic_name
-
-	return topic_name
-
-def getUserId():
-	return rospy.get_param(PARAM_USER_ID)
-
-def getAiId():
-	return rospy.get_param(PARAM_AI_ID)
-
diff --git a/scripts/tic_tac_toe_common.pyc b/scripts/tic_tac_toe_common.pyc
deleted file mode 100644
index 8972205a838900ad9964aa1da348081568d95798..0000000000000000000000000000000000000000
Binary files a/scripts/tic_tac_toe_common.pyc and /dev/null differ
diff --git a/srv/Board.srv b/srv/Board.srv
deleted file mode 100644
index e28698101ccc759deee12d2c64c4fb2d3b07c1aa..0000000000000000000000000000000000000000
--- a/srv/Board.srv
+++ /dev/null
@@ -1,4 +0,0 @@
-int32 id_human
-int32 id_ai
----
-int32[] board
diff --git a/srv/IntInt.srv b/srv/IntInt.srv
deleted file mode 100644
index 71badf76326020cf84e15257e43f3fb7063518ae..0000000000000000000000000000000000000000
--- a/srv/IntInt.srv
+++ /dev/null
@@ -1,3 +0,0 @@
-int32 data
----
-int32 data
diff --git a/srv/MiniMax.srv b/srv/MiniMax.srv
deleted file mode 100644
index 1f63c70bff754bb2c120baa8067592d637b1e9c2..0000000000000000000000000000000000000000
--- a/srv/MiniMax.srv
+++ /dev/null
@@ -1,6 +0,0 @@
-int32[] board
-int32 max_depth
-int32 id_player
-int32 id_opponent
----
-int32 action