diff --git a/Battle Pong/Ball.tscn b/Battle Pong/Ball.tscn
index abeeabb3bbe137876f4e337b03daf49e41a13164..fbfd96fb461442a7cb1b15711531e8fa057c377e 100644
--- a/Battle Pong/Ball.tscn	
+++ b/Battle Pong/Ball.tscn	
@@ -1,20 +1,9 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=3 format=2]
 
 [ext_resource path="res://Ball.gd" type="Script" id=1]
-[ext_resource path="res://ball_2.png" type="Texture" id=2]
-[ext_resource path="res://ball_1.png" type="Texture" id=3]
-[ext_resource path="res://ball_3.png" type="Texture" id=4]
 
-[sub_resource type="SpriteFrames" id=1]
-animations = [ {
-"frames": [ ExtResource( 3 ), ExtResource( 2 ), ExtResource( 4 ) ],
-"loop": true,
-"name": "default",
-"speed": 5.0
-} ]
-
-[sub_resource type="RectangleShape2D" id=2]
-extents = Vector2( 6.66667, 6.66419 )
+[sub_resource type="RectangleShape2D" id=1]
+extents = Vector2( 12, 12.8754 )
 
 [node name="Ball" type="KinematicBody2D"]
 pause_mode = 1
@@ -23,24 +12,15 @@ collision_mask = 7
 motion/sync_to_physics = true
 script = ExtResource( 1 )
 
-[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
-visible = false
-position = Vector2( -3, -3 )
-scale = Vector2( 6, 6 )
-frames = SubResource( 1 )
-frame = 1
-speed_scale = 2.0
-
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 position = Vector2( -3.8147e-06, -0.132433 )
-scale = Vector2( 3, 3 )
-shape = SubResource( 2 )
+shape = SubResource( 1 )
 
 [node name="ColorRect" type="ColorRect" parent="."]
-margin_left = -20.0
-margin_top = -20.0
-margin_right = 20.0
-margin_bottom = 20.0
+margin_left = -12.5
+margin_top = -12.5
+margin_right = 12.5
+margin_bottom = 12.5
 color = Color( 0.992157, 1, 0, 1 )
 __meta__ = {
 "_edit_use_anchors_": false
diff --git a/Battle Pong/Main.gd b/Battle Pong/Main.gd
index 29db56b0539f4c76133b66d7f605c0d3bdab1e2e..0eadd60ed6a5ca2b7c9da93d72e271ea04461da9 100644
--- a/Battle Pong/Main.gd	
+++ b/Battle Pong/Main.gd	
@@ -28,8 +28,17 @@ const P1_WIN = "Player 1 won!"
 const P2_WIN = "Player 2 won!"
 var message = SPACE_TO_PLAY
 
+export var enable_rendering = true
+export var learn_with_images = true
+export var playtime_per_step = 0.1
+
 func _ready():
-    VisualServer.render_loop_enabled = false # disable rendering to create a massive boost
+    if not enable_rendering:
+        VisualServer.render_loop_enabled = false # disable rendering to create a massive boost
+    if learn_with_images:
+        $DisplayMessage.hide()
+        $Player1Score.hide()
+        $Player2Score.hide()
     
     # Connect base signals to get notified of new client connections,
     # disconnections, and disconnect requests.
@@ -172,7 +181,6 @@ func _close_request(id, code, reason):
     #print("Client %d disconnecting with code: %d, reason: %s" % [id, code, reason])
     pass
 
-
 func _disconnected(id, was_clean = false):
     # This is called when a client disconnects, "id" will be the one of the
     # disconnecting client, "was_clean" will tell you if the disconnection
@@ -231,36 +239,60 @@ func _on_data(id):
                 next_step_player_two  = true
             if(i == "player_two_nothing"):
                 next_step_player_two  = true
-            if(i == "start_game"):
-                play()
-                var return_value = get_return_value_as_utf8_JSON()
-                _server.get_peer(id).put_packet(return_value)
-                pass
-            if(i=="connect_player"):
-                var return_value = get_return_value_as_utf8_JSON()
+            if(i=="connect_player" or i == "start_game"):
+                if(i == "start_game"):
+                    play()
+                var return_value = null
+                if learn_with_images:
+                    return_value = yield(get_yielded_return_value_as_utf8_JSON(), "completed")
+                else:
+                    return_value = get_return_value_as_utf8_JSON()
                 _server.get_peer(id).put_packet(return_value)
                 pass
     if(next_step_player_one and next_step_player_two):
         unpause()
-        #if($RunTimer.is_stopped()): # Used to show how much faster the game runs independent from realtime
-        #    $RunTimer.start() 
-        $PlayerOne.run(0.1)
-        $PlayerTwo.run(0.1)
-        ball.run(0.1)
+        $PlayerOne.run(playtime_per_step)
+        $PlayerTwo.run(playtime_per_step)
+        ball.run(playtime_per_step)
         timeout()
         
-
+func get_observarion():
+    return {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y}, "ball":ball.get_observation()}
+        
 func get_return_value_as_utf8_JSON():
-    var observation = {"PlayerOne":{"X":$PlayerOne.position.x,"Y":$PlayerOne.position.y}, "PlayerTwo":{"X":$PlayerTwo.position.x,"Y":$PlayerTwo.position.y}, "ball":ball.get_observation()}
+    var observation = get_observarion()
     var return_value = {"observation":observation, "reward":{"PlayerOne":reward_player_one, "PlayerTwo":reward_player_two}, "done":(not playing), "info":{"PlayerOneScore":score_player_one, "PlayerTwoScore":score_player_two}}
     return (JSON.print(return_value)).to_utf8()
 
+func get_yielded_return_value_as_utf8_JSON():
+    var observation = get_observarion()
+    var screenshot = yield(get_screenshot(), "completed")
+    var return_value = {"observation":observation, "reward":{"PlayerOne":reward_player_one, "PlayerTwo":reward_player_two}, "done":(not playing), "info":{"PlayerOneScore":score_player_one, "PlayerTwoScore":score_player_two, "screenshot":screenshot}}
+    return (JSON.print(return_value)).to_utf8()
 
-func _on_RunTimer_timeout():
-    print("_RunTimer_timeout")
-    pass
+func get_screenshot():
+    get_viewport().set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)
+    # Wait until the frame has finished before getting the texture.
+    yield(VisualServer, "frame_post_draw")
+
+    var thumbnail = get_viewport().get_texture().get_data()
+    thumbnail.flip_y()    
+    thumbnail.resize(100, 60 )
+    thumbnail.convert(Image.FORMAT_RGB8 ) # Farbe
+    #thumbnail.convert(Image.FORMAT_L8 ) # S/W
     
+    #thumbnail.save_png('test.png') # Save Image as file - to debug
+
+    var array : PoolByteArray = thumbnail.get_data()
+    var sg_width = thumbnail.get_width()
+    var sg_height = thumbnail.get_height()
+    var sg_format = thumbnail.get_format()
+    var sg_u_size = array.size()
+    var sg_saved_img = Marshalls.raw_to_base64(array)
 
+    var metadata = {"image" : sg_saved_img, "size" : sg_u_size, "width" : sg_width, "height" : sg_height, "format" : sg_format}
+    
+    return metadata
 
 func timeout():
     pause()  
@@ -270,7 +302,13 @@ func timeout():
     Input.parse_input_event(action_player_two)
     next_step_player_one = false
     next_step_player_two = false
-    var return_value = get_return_value_as_utf8_JSON() # important to get the return values before resetting the reward
+    
+    var return_value = null
+    if learn_with_images:
+        return_value = yield(get_yielded_return_value_as_utf8_JSON(), "completed")
+    else:
+        return_value = get_return_value_as_utf8_JSON()
+        
     reward_player_one = 0
     reward_player_two = 0
     ##print(return_value)
diff --git a/Battle Pong/Main.tscn b/Battle Pong/Main.tscn
index 93b36b20f6348d33a296c23a5fbcaf1523782577..804fb3c80b00779c5b5433de80de94b16fbca3dc 100644
--- a/Battle Pong/Main.tscn	
+++ b/Battle Pong/Main.tscn	
@@ -42,10 +42,6 @@ __meta__ = {
 "_edit_use_anchors_": false
 }
 
-[node name="StartTimer" type="Timer" parent="."]
-wait_time = 2.0
-one_shot = true
-
 [node name="StartPositionPlayerTwo" type="Position2D" parent="."]
 position = Vector2( 968, 300 )
 
@@ -83,11 +79,5 @@ __meta__ = {
 
 [node name="WallBottom" parent="." instance=ExtResource( 3 )]
 position = Vector2( 0, 600 )
-
-[node name="RunTimer" type="Timer" parent="."]
-pause_mode = 2
-wait_time = 0.01
-one_shot = true
 [connection signal="hit" from="PlayerTwo" to="." method="_on_PlayerTwo_hit"]
 [connection signal="hit" from="PlayerOne" to="." method="_on_PlayerOne_hit"]
-[connection signal="timeout" from="RunTimer" to="." method="_on_RunTimer_timeout"]
diff --git a/Battle Pong/Player.gd b/Battle Pong/Player.gd
index c7685fccae81388da290f0ff2efab0fab1ad105a..79029592e69ca378edaebc571454f3d4289ac999 100644
--- a/Battle Pong/Player.gd	
+++ b/Battle Pong/Player.gd	
@@ -33,9 +33,6 @@ func run(delta):
             
     if velocity.length() > 0:
         velocity = velocity.normalized() * speed
-        $AnimatedSprite.play()
-    else:
-        $AnimatedSprite.stop()
 
     position += velocity * delta
     #position.x = clamp(position.x, 0, screen_size.x) # ändert sich nicht
diff --git a/Battle Pong/Player.tscn b/Battle Pong/Player.tscn
index db6b1cf0f3fefa794d3c9e67114c51eaa076ddc4..7e7361b806ac08103e49ae10aee3db9532d27f83 100644
--- a/Battle Pong/Player.tscn	
+++ b/Battle Pong/Player.tscn	
@@ -1,22 +1,12 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=3 format=2]
 
-[ext_resource path="res://player_1.png" type="Texture" id=1]
-[ext_resource path="res://player_2.png" type="Texture" id=2]
-[ext_resource path="res://player_3.png" type="Texture" id=3]
 [ext_resource path="res://Player.gd" type="Script" id=4]
 
-[sub_resource type="SpriteFrames" id=1]
-animations = [ {
-"frames": [ ExtResource( 1 ), ExtResource( 2 ), ExtResource( 3 ) ],
-"loop": true,
-"name": "wave",
-"speed": 5.0
-} ]
-
-[sub_resource type="RectangleShape2D" id=2]
-extents = Vector2( 7.51772, 60.0095 )
+[sub_resource type="RectangleShape2D" id=1]
+extents = Vector2( 7.96318, 39.9475 )
 
 [node name="Player" type="RigidBody2D"]
+position = Vector2( -0.325993, -1.00885 )
 collision_layer = 2
 collision_mask = 8
 script = ExtResource( 4 )
@@ -25,24 +15,19 @@ __meta__ = {
 }
 is_player_one = false
 
-[node name="AnimatedSprite" type="AnimatedSprite" parent="."]
-visible = false
-position = Vector2( -1.5, 0 )
-scale = Vector2( 3, 6 )
-frames = SubResource( 1 )
-animation = "wave"
-speed_scale = 2.0
-playing = true
-
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 light_mask = 9
-shape = SubResource( 2 )
+shape = SubResource( 1 )
+__meta__ = {
+"_edit_lock_": true
+}
 
 [node name="ColorRect" type="ColorRect" parent="."]
-margin_left = -7.506
-margin_top = -60.0
-margin_right = 7.494
-margin_bottom = 60.0
+margin_left = -7.90636
+margin_top = -40.0468
+margin_right = 8.09364
+margin_bottom = 39.9532
 __meta__ = {
+"_edit_lock_": true,
 "_edit_use_anchors_": false
 }