diff --git a/Assets/Scripts/City.cs b/Assets/Scripts/City.cs
new file mode 100644
index 0000000000000000000000000000000000000000..8cb47e3da408a2bce610a8336315573397eba7e1
--- /dev/null
+++ b/Assets/Scripts/City.cs
@@ -0,0 +1,62 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class City : MonoBehaviour
+{
+    
+    
+    // Start is called before the first frame update
+    void Start()
+    {
+        
+    }
+    
+    
+    /** 
+     *  Kayttaa resurssia r, maaran 'amount' verran (amount >= 0).
+     *  Voidaan kayttaa maximissaan sen verran resursseja mita niita on kaytossa.
+     */
+    public void useResource(Resource r, int amount)
+    {
+        if (amount<0)
+        {
+            return;
+        }
+        ResourcePool[] lista = gameObject.GetComponents<ResourcePool>();
+        for (int i = 0; i < lista.Length; i++)
+        {
+            if (lista[i].getResource().GetType().Equals(r.GetType()))
+            {
+                lista[i].useResource(amount);
+            }
+        }
+    }
+
+    /** 
+*  Lisaa resurssia r, maaran 'amount' verran (amount >= 0).
+*  Voidaan lisata maximissaan resurssin maximikapasiteettiin asti,
+*  ts. jos nykyinen resurssimaara + lisatty maara >= maximikapasiteetti
+*  niin uusi resurssimaara = maximikapasiteetti
+*/
+    public void addResource(Resource r, int amount)
+    {
+        if (amount<0)
+        {
+            return;
+        }
+        ResourcePool[] lista = gameObject.GetComponents<ResourcePool>();
+       
+        for (int i = 0; i < lista.Length; i++)
+        {
+            if (lista[i].getResource().GetType().Equals(r.GetType()))
+            {
+                lista[i].addResource(amount);
+                return;
+            }
+        }
+        ResourcePool respool = gameObject.AddComponent<ResourcePool>();
+        respool.setResource(r);
+        respool.addResource(amount);
+    }
+}
diff --git a/Assets/Scripts/City.cs.meta b/Assets/Scripts/City.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..ec6eefff5080908c3c44bbc667566a429ad9ccf0
--- /dev/null
+++ b/Assets/Scripts/City.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dfe928a858872424991e927606dd4bc3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/ResourcePool.cs b/Assets/Scripts/ResourcePool.cs
new file mode 100644
index 0000000000000000000000000000000000000000..da4ec052a8c32be22dfb77681c135f6b8517bb96
--- /dev/null
+++ b/Assets/Scripts/ResourcePool.cs
@@ -0,0 +1,58 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ResourcePool : MonoBehaviour
+{
+
+    [SerializeField]
+    private Resource r;
+
+    [SerializeField]
+    private int amount = 0;
+
+    [SerializeField]
+    private int maxCapacity = 100;
+
+    // Start is called before the first frame update
+    void Start()
+    {
+    }
+    public void setResource(Resource r)
+    {
+        this.r = r;
+    }
+
+    public Resource getResource()
+    {
+        return r;
+    }
+    /**
+     * Kayttaa resurssia maaran X verran
+     */
+    public void useResource(int x)
+    {
+        if (this.amount - x <= 0)
+        {
+            this.amount = 0;
+        }
+        else
+        {
+            this.amount -= x;
+        }
+    }
+    /**
+     * Lisaa resurssia maaran X verran
+     */
+    public void addResource(int x)
+    {
+        if (this.amount + x >= this.maxCapacity)
+        {
+            this.amount = this.maxCapacity;
+        }
+        else
+        {
+            this.amount += x;
+        }
+    }
+}
diff --git a/Assets/Scripts/ResourcePool.cs.meta b/Assets/Scripts/ResourcePool.cs.meta
new file mode 100644
index 0000000000000000000000000000000000000000..4cac451edec3609387abc22103f7d8985058639d
--- /dev/null
+++ b/Assets/Scripts/ResourcePool.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d5f9cff662cdcb44d9481366eacfa431
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: