Index: /src/org/openstreetmap/josm/Main.java
===================================================================
--- /src/org/openstreetmap/josm/Main.java	(revision 143)
+++ /src/org/openstreetmap/josm/Main.java	(revision 144)
@@ -12,4 +12,5 @@
 import java.net.URISyntaxException;
 import java.util.Collection;
+import java.util.LinkedList;
 import java.util.Map;
 import java.util.StringTokenizer;
@@ -55,4 +56,5 @@
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
+import org.openstreetmap.josm.plugins.Plugin;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -88,4 +90,8 @@
 	 */
 	public static MapFrame map;
+	/**
+	 * All installed and loaded plugins (resp. their main classes)
+	 */
+	public final Collection<Plugin> plugins = new LinkedList<Plugin>();
 
 	/**
@@ -118,4 +124,7 @@
 		}
 		redoUndoListener.commandChanged(0,0);
+
+		for (Plugin plugin : plugins)
+			plugin.mapFrameInitialized(map);
 	}
 
@@ -236,4 +245,16 @@
 
 		contentPane.updateUI();
+		
+		// Plugins
+		if (pref.hasKey("plugins")) {
+			for (String pluginName : pref.get("plugins").split(",")) {
+				try {
+	                plugins.add((Plugin)Class.forName(pluginName).newInstance());
+                } catch (Exception e) {
+                	e.printStackTrace();
+                	JOptionPane.showMessageDialog(parent, tr("Could not load plugin {0}.", pluginName));
+                }
+			}
+		}
 	}
 	/**
Index: /src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java
===================================================================
--- /src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 143)
+++ /src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java	(revision 144)
@@ -27,20 +27,11 @@
 	 * The environment to paint to.
 	 */
-	private final Graphics g;
+	protected Graphics g;
 	/**
 	 * MapView to get screen coordinates.
 	 */
-	private final NavigatableComponent nc;
-	private static final double PHI = Math.toRadians(20);
+	protected NavigatableComponent nc;
 
-	/**
-	 * Construct the painter visitor.
-	 * @param g   The graphics to draw to.
-	 * @param mv  The view to get screen coordinates from.
-	 */
-	public SimplePaintVisitor(Graphics g, NavigatableComponent mv) {
-		this.g = g;
-		this.nc = mv;
-	}
+	protected static final double PHI = Math.toRadians(20);
 
 	/**
@@ -97,5 +88,5 @@
 	 * Draw a line with the given color.
 	 */
-	private void drawSegment(Segment ls, Color col) {
+	protected void drawSegment(Segment ls, Color col) {
 		if (ls.incomplete)
 			return;
@@ -122,3 +113,12 @@
 		return ColorHelper.html2color(colStr);
 	}
+
+
+	public void setGraphics(Graphics g) {
+    	this.g = g;
+    }
+
+	public void setNavigatableComponent(NavigatableComponent nc) {
+    	this.nc = nc;
+    }
 }
Index: /src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
===================================================================
--- /src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 143)
+++ /src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java	(revision 144)
@@ -138,6 +138,6 @@
 		if (value == null)
 			selectionChanged(sel); // update whole table
-		else
-			PropertiesDialog.this.repaint(); // repaint is enough 
+		
+		Main.parent.repaint(); // repaint all - drawing could have been changed
 	}
 
@@ -185,4 +185,5 @@
 		Main.main.editLayer().add(new ChangePropertyCommand(sel, key, value));
 		selectionChanged(sel); // update table
+		Main.parent.repaint(); // repaint all - drawing could have been changed
 	}
 
Index: /src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 143)
+++ /src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 144)
@@ -114,4 +114,6 @@
 	public final LinkedList<CommandQueueListener> listenerCommands = new LinkedList<CommandQueueListener>();
 
+	private SimplePaintVisitor mapPainter = new SimplePaintVisitor();
+
 	/**
 	 * Construct a OsmDataLayer.
@@ -138,17 +140,18 @@
 	 */
 	@Override public void paint(final Graphics g, final MapView mv) {
-		final SimplePaintVisitor visitor = new SimplePaintVisitor(g, mv);
+		mapPainter.setGraphics(g);
+		mapPainter.setNavigatableComponent(mv);
 		for (final OsmPrimitive osm : data.segments)
 			if (!osm.deleted)
-				osm.visit(visitor);
+				osm.visit(mapPainter);
 		for (final OsmPrimitive osm : data.ways)
 			if (!osm.deleted)
-				osm.visit(visitor);
+				osm.visit(mapPainter);
 		for (final OsmPrimitive osm : data.nodes)
 			if (!osm.deleted)
-				osm.visit(visitor);
+				osm.visit(mapPainter);
 		for (final OsmPrimitive osm : data.getSelected())
 			if (!osm.deleted)
-				osm.visit(visitor);
+				osm.visit(mapPainter);
 		Main.map.conflictDialog.paintConflicts(g, mv);
 	}
@@ -335,3 +338,8 @@
 				new JMenuItem(new LayerListPopup.InfoAction(this))};
 	}
+
+
+	public void setMapPainter(SimplePaintVisitor mapPainter) {
+    	this.mapPainter = mapPainter;
+    }
 }
Index: /src/org/openstreetmap/josm/plugins/Plugin.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/Plugin.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/Plugin.java	(revision 144)
@@ -0,0 +1,32 @@
+package org.openstreetmap.josm.plugins;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.MapFrame;
+
+/**
+ * All plugins must have at least one class implementing this interface. 
+ * 
+ * All plugins must have an default constructor (taking no arguments). This constructor
+ * is called at JOSM startup, after all Main-objects have been initialized.
+ *
+ * The pluginname is also the name of the directory to store the plugin's
+ * own stuff (located under the josm preferences directory)
+ * @author Immanuel.Scholz
+ */
+public abstract class Plugin {
+
+	private final String name;
+
+	public Plugin(String pluginName) {
+		this.name = pluginName;
+	}
+
+	public final String getPluginDir() {
+		return Main.pref.getPreferencesDir()+"plugins/"+name+"/";
+	}
+
+	/**
+	 * Called after Main.mapFrame is initalized. (After the first data is loaded).
+	 */
+	public void mapFrameInitialized(MapFrame mapFrame) {}
+}
Index: /src/org/openstreetmap/josm/plugins/mappaint/AreaElemStyle.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/AreaElemStyle.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/AreaElemStyle.java	(revision 144)
@@ -0,0 +1,22 @@
+package org.openstreetmap.josm.plugins.mappaint;
+import java.awt.Color;
+
+public class AreaElemStyle extends ElemStyle
+{
+	Color colour;
+
+	public AreaElemStyle (Color colour)
+	{
+		this.colour = colour;
+	}
+
+	public Color getColour()
+	{
+		return colour;
+	}
+
+	@Override public String toString()
+	{
+		return "AreaElemStyle:   colour=" + colour;
+	}
+}
Index: /src/org/openstreetmap/josm/plugins/mappaint/ElemStyle.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/ElemStyle.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/ElemStyle.java	(revision 144)
@@ -0,0 +1,9 @@
+package org.openstreetmap.josm.plugins.mappaint;
+
+// nothing in here yet
+abstract public class ElemStyle
+{
+}
+
+
+
Index: /src/org/openstreetmap/josm/plugins/mappaint/ElemStyleHandler.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/ElemStyleHandler.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/ElemStyleHandler.java	(revision 144)
@@ -0,0 +1,141 @@
+package org.openstreetmap.josm.plugins.mappaint;
+
+import java.awt.Color;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.tools.ColorHelper;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.xml.sax.Attributes;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class ElemStyleHandler extends DefaultHandler
+{
+	boolean inDoc, inRule, inCondition, inElemStyle, inLine, inIcon, inArea;
+	ElemStyle curStyle;
+	ElemStyles styles;
+	String curWidth, curKey, curValue;
+	ImageIcon curIcon;
+	Color curColour;
+	boolean curAnnotate;
+
+	public ElemStyleHandler(  )
+	{
+		inDoc=inRule=inCondition=inElemStyle=inLine=inIcon=inArea=false;
+		styles = new ElemStyles();
+	}
+
+	public void setElemStyles(ElemStyles styles)
+	{
+		this.styles = styles;
+	}
+
+	/*
+	ElemStyles getElemStyles()
+	{
+		return styles;
+	}
+	*/
+
+	@Override public void startDocument()
+	{
+		inDoc = true;
+	}
+
+	@Override public void endDocument()
+	{
+		inDoc = false;
+	}
+
+	@Override public void startElement(String uri,String name, String qName, 
+									Attributes atts)	
+	{
+		if(inDoc==true)
+		{
+			if(qName.equals("rule"))
+			{
+				inRule=true;
+			}
+			else if (qName.equals("condition") && inRule)
+			{
+				inCondition=true;
+				for(int count=0; count<atts.getLength(); count++)
+				{
+					if(atts.getQName(count).equals("k"))
+						curKey = atts.getValue(count);		
+					else if(atts.getQName(count).equals("v"))
+						curValue = atts.getValue(count);		
+				}
+			}
+			else if (qName.equals("line"))
+			{
+				inLine = true;
+				for(int count=0; count<atts.getLength(); count++)
+				{
+					if(atts.getQName(count).equals("width"))
+						curWidth = atts.getValue(count);
+					else if (atts.getQName(count).equals("colour"))
+						curColour=ColorHelper.html2color(atts.getValue(count));
+				}
+			}
+			else if (qName.equals("icon"))
+			{
+				inIcon = true;
+				for(int count=0; count<atts.getLength(); count++)
+				{
+					if(atts.getQName(count).equals("src"))
+						curIcon = ImageProvider.get ("plugins/mappaint/nodes", 
+										atts.getValue(count));
+					else if (atts.getQName(count).equals("annotate"))
+						curAnnotate = Boolean.parseBoolean
+										(atts.getValue(count));
+				}
+			}
+			else if (qName.equals("area"))
+			{
+				inArea = true;
+				for(int count=0; count<atts.getLength(); count++)
+				{
+					if (atts.getQName(count).equals("colour"))
+						curColour=ColorHelper.html2color(atts.getValue(count));
+				}
+			}
+		}
+	}
+
+
+	@Override public void endElement(String uri,String name, String qName)
+	{
+		if(inRule && qName.equals("rule"))
+		{
+			inRule = false;
+			styles.add (curKey, curValue, curStyle);
+		}
+		else if (inCondition && qName.equals("condition"))
+			inCondition = false;
+		else if (inLine && qName.equals("line"))
+		{
+			inLine = false;
+			curStyle = new LineElemStyle(Integer.parseInt(curWidth), curColour);
+		}
+		else if (inIcon && qName.equals("icon"))
+		{
+			inIcon = false;
+			curStyle = new IconElemStyle(curIcon,curAnnotate);
+		}
+		else if (inArea && qName.equals("area"))
+		{
+			inArea = false;
+			curStyle = new AreaElemStyle (curColour);
+		}
+
+	}
+
+	@Override public void characters(char ch[], int start, int length)
+	{
+	}
+}
+////////////////////////////////////////////////////////////////////////////////
+
+
+
Index: /src/org/openstreetmap/josm/plugins/mappaint/ElemStyles.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/ElemStyles.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/ElemStyles.java	(revision 144)
@@ -0,0 +1,39 @@
+package org.openstreetmap.josm.plugins.mappaint;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+public class ElemStyles
+{
+	HashMap<String, ElemStyle> styles;
+
+	public ElemStyles()
+	{
+		styles = new HashMap<String, ElemStyle>();
+	}
+
+	public void add (String k, String v, ElemStyle style)
+	{
+		String key = k + "=" + v;
+		styles.put(key, style);
+	}
+
+	public ElemStyle getStyle (OsmPrimitive p)
+	{
+		if(p.keys!=null)
+		{
+			Iterator<String> iterator = p.keys.keySet().iterator();
+			while(iterator.hasNext())	
+			{
+				String key = iterator.next();
+				String kv = key + "=" + p.keys.get(key);
+				if(styles.containsKey(kv))
+				{
+					return styles.get(kv);
+				}
+			}
+		}
+		return null;
+	}
+}
Index: /src/org/openstreetmap/josm/plugins/mappaint/IconElemStyle.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/IconElemStyle.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/IconElemStyle.java	(revision 144)
@@ -0,0 +1,29 @@
+package org.openstreetmap.josm.plugins.mappaint;
+import javax.swing.ImageIcon;
+
+public class IconElemStyle extends ElemStyle
+{
+	ImageIcon icon;
+	boolean annotate;
+
+	public IconElemStyle (ImageIcon icon, boolean annotate)
+	{
+		this.icon=icon;
+		this.annotate=annotate;
+	}	
+	
+	public ImageIcon getIcon()
+	{
+		return icon;
+	}
+
+	public boolean doAnnotate()
+	{
+		return annotate;
+	}
+
+	@Override public String toString()
+	{
+		return "LineElemStyle:  icon= " + icon +  " annotate=" + annotate;
+	}
+}
Index: /src/org/openstreetmap/josm/plugins/mappaint/LineElemStyle.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/LineElemStyle.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/LineElemStyle.java	(revision 144)
@@ -0,0 +1,29 @@
+package org.openstreetmap.josm.plugins.mappaint;
+import java.awt.Color;
+
+public class LineElemStyle extends ElemStyle
+{
+	int width;
+	Color colour;
+
+	public LineElemStyle (int width, Color colour)
+	{
+		this.width = width;
+		this.colour = colour;
+	}
+
+	public int getWidth()
+	{
+		return width;
+	}
+
+	public Color getColour()
+	{
+		return colour;
+	}
+
+	@Override public String toString()
+	{
+		return "LineElemStyle:  width= " + width +  " colour=" + colour;
+	}
+}
Index: /src/org/openstreetmap/josm/plugins/mappaint/MapPaintPlugin.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/MapPaintPlugin.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/MapPaintPlugin.java	(revision 144)
@@ -0,0 +1,55 @@
+package org.openstreetmap.josm.plugins.mappaint;
+
+import java.io.File;
+import java.io.FileReader;
+
+import org.openstreetmap.josm.gui.MapFrame;
+import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.plugins.Plugin;
+import org.xml.sax.InputSource;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.XMLReaderFactory;
+
+public class MapPaintPlugin extends Plugin implements LayerChangeListener {
+
+	public static ElemStyles elemStyles = new ElemStyles();
+
+	public MapPaintPlugin() {
+		super("mappaint");
+		
+		String elemStylesFile = getPluginDir()+"elemstyles.xml";
+		File f = new File(elemStylesFile);
+		if (f.exists())
+		{
+			try
+			{
+				XMLReader xmlReader = XMLReaderFactory.createXMLReader();
+				ElemStyleHandler handler = new ElemStyleHandler();
+				xmlReader.setContentHandler(handler);
+				xmlReader.setErrorHandler(handler);
+				handler.setElemStyles(elemStyles);
+				// temporary only!
+				xmlReader.parse(new InputSource(new FileReader(f)));
+			}
+			catch (Exception e)
+			{
+				throw new RuntimeException(e);
+			}
+		}
+	}
+
+	@Override public void mapFrameInitialized(MapFrame mapFrame) {
+		mapFrame.mapView.addLayerChangeListener(this);
+	}
+
+	public void activeLayerChange(Layer oldLayer, Layer newLayer) {}
+
+	public void layerAdded(Layer newLayer) {
+		if (newLayer instanceof OsmDataLayer)
+			((OsmDataLayer)newLayer).setMapPainter(new MapPaintVisitor());
+    }
+
+	public void layerRemoved(Layer oldLayer) {}
+}
Index: /src/org/openstreetmap/josm/plugins/mappaint/MapPaintVisitor.java
===================================================================
--- /src/org/openstreetmap/josm/plugins/mappaint/MapPaintVisitor.java	(revision 144)
+++ /src/org/openstreetmap/josm/plugins/mappaint/MapPaintVisitor.java	(revision 144)
@@ -0,0 +1,186 @@
+package org.openstreetmap.josm.plugins.mappaint;
+
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.Polygon;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.Segment;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor;
+
+/**
+ * A visitor that paints the OSM components in a map-like style.
+ */
+
+public class MapPaintVisitor extends SimplePaintVisitor {
+
+	/**
+	 * Draw a small rectangle. 
+	 * White if selected (as always) or red otherwise.
+	 * 
+	 * @param n The node to draw.
+	 */
+	// Altered from SimplePaintVisitor
+	@Override public void visit(Node n) {
+		ElemStyle nodeStyle = MapPaintPlugin.elemStyles.getStyle(n);
+		if(nodeStyle!=null)
+		{
+			if(nodeStyle instanceof IconElemStyle)
+			{
+				drawNode(n, ((IconElemStyle)nodeStyle).getIcon());
+			}
+			else
+			{
+				// throw some sort of exception
+			}
+		}
+		else
+		{
+			drawNode(n, n.selected ? getPreferencesColor("selected", 
+									Color.YELLOW)
+				: getPreferencesColor("node", Color.RED));
+		}
+	}
+
+	/**
+	 * Draw just a line between the points.
+	 * White if selected (as always) or grey otherwise.
+	 * Want to make un-wayed segments stand out less than ways.
+	 */
+	@Override public void visit(Segment ls) {
+		drawSegment(ls, Color.GRAY);
+	}
+
+	/**
+	 * Draw a line for all segments, according to tags.
+	 * @param w The way to draw.
+	 */
+	// Altered from SimplePaintVisitor
+	@Override public void visit(Way w) {
+		Color colour = Color.GRAY;
+		int width=1;
+		boolean area=false;
+		ElemStyle wayStyle = MapPaintPlugin.elemStyles.getStyle(w);
+		if(wayStyle!=null)
+		{
+			if(wayStyle instanceof LineElemStyle)
+			{
+				colour = ((LineElemStyle)wayStyle).getColour();
+				width = ((LineElemStyle)wayStyle).getWidth();
+			}
+			else if (wayStyle instanceof AreaElemStyle)
+			{
+				colour = ((AreaElemStyle)wayStyle).getColour();
+				area = true;
+			}
+		}
+
+		if(area)
+		{
+			drawWayAsArea(w,colour);
+		}
+		else
+		{
+			for (Segment ls : w.segments)
+			{
+				if (!ls.selected) // selected already in good color
+					drawSegment(ls, w.selected ? 
+						getPreferencesColor("selected", Color.YELLOW) : colour,
+						width);
+			}
+		}
+	}
+
+	// This assumes that all segments are aligned in the same direction!
+	protected void drawWayAsArea(Way w, Color colour)
+	{
+		Polygon polygon = new Polygon();
+		Point p;
+		boolean first=true;
+		for (Segment ls : w.segments)
+		{
+			if(first)
+			{
+				p = nc.getPoint(ls.from.eastNorth);
+				polygon.addPoint(p.x,p.y);
+				first=false;
+			}
+			p = nc.getPoint(ls.to.eastNorth);
+			polygon.addPoint(p.x,p.y);
+		}
+
+		g.setColor( w.selected ? 
+						getPreferencesColor("selected", Color.YELLOW) : colour);
+
+		g.fillPolygon(polygon);
+	}
+
+	// NEW
+	protected void drawNode(Node n, ImageIcon icon) {
+		Point p = nc.getPoint(n.eastNorth);
+		int w = icon.getIconWidth(), h=icon.getIconHeight();
+		icon.paintIcon ( Main.map.mapView, g, p.x-w/2, p.y-h/2 );
+		String name = (n.keys==null) ? null : n.keys.get("name");
+		if (name!=null)
+		{
+			g.setColor(Color.WHITE);
+			g.setFont (new Font("Helvetica", Font.PLAIN, 8));
+			g.drawString (name, p.x+w/2+2, p.y+h/2+2);
+		}
+		if (n.selected)
+		{
+			g.setColor (  getPreferencesColor("selected", Color.YELLOW) );
+			g.drawRect (p.x-w/2-2,p.y-w/2-2, w+4, h+4);
+		}
+	}
+
+	/**
+	 * Draw a line with the given color.
+	 */
+	// Altered - now specify width 
+	@Override protected void drawSegment(Segment ls, Color col) {
+			drawSegment(ls,col,1);
+	}
+
+	// Altered - now specify width 
+	private void drawSegment (Segment ls, Color col, int width) {
+		Graphics2D g2d = (Graphics2D)g;
+		if (ls.incomplete)
+			return;
+		if (ls.selected)
+			col = getPreferencesColor("selected", Color.YELLOW);
+		g.setColor(col);
+		//g.setWidth(width);
+		g2d.setStroke(new BasicStroke(width));
+		Point p1 = nc.getPoint(ls.from.eastNorth);
+		Point p2 = nc.getPoint(ls.to.eastNorth);
+		g.drawLine(p1.x, p1.y, p2.x, p2.y);
+
+		if (Main.pref.getBoolean("draw.segment.direction")) {
+			double t = Math.atan2(p2.y-p1.y, p2.x-p1.x) + Math.PI;
+	        g.drawLine(p2.x,p2.y, (int)(p2.x + 10*Math.cos(t-PHI)), (int)(p2.y + 10*Math.sin(t-PHI)));
+	        g.drawLine(p2.x,p2.y, (int)(p2.x + 10*Math.cos(t+PHI)), (int)(p2.y + 10*Math.sin(t+PHI)));
+		}
+	}
+
+
+	/**
+	 * Draw the node as small rectangle with the given color.
+	 *
+	 * @param n		The node to draw.
+	 * @param color The color of the node.
+	 */
+	@Override public void drawNode(Node n, Color color) {
+		Point p = nc.getPoint(n.eastNorth);
+		g.setColor(color);
+		g.drawRect(p.x-1, p.y-1, 2, 2);
+	}
+
+}
