diff --git a/test-files/elements/OsmMapTest/OsmMapAppendTest.osm b/test-files/elements/OsmMapTest/OsmMapAppendTest.osm
new file mode 100644
index 0000000..27a3db6
--- /dev/null
+++ b/test-files/elements/OsmMapTest/OsmMapAppendTest.osm
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<osm version="0.6" generator="hootenanny" srs="GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], TOWGS84[0,0,0,0,0,0,0], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.0174532925199433, AUTHORITY["EPSG","9108"]], AUTHORITY["EPSG","4326"]]">
+ <node visible="true" id="-1669723" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541670018907581" lon="-104.8997069874790355"/>
+ <node visible="true" id="-1669725" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8540851073630833" lon="-104.9014476647277121"/>
+ <node visible="true" id="-1669727" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542471187715179" lon="-104.9010788637033329"/>
+ <node visible="true" id="-1669729" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542599687747341" lon="-104.9005795104799432"/>
+ <node visible="true" id="-1669731" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549614373988845" lon="-104.8997124086258452"/>
+ <node visible="true" id="-1669733" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8545785045938388" lon="-104.8997171368440888"/>
+ <node visible="true" id="-1669735" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542618470630714" lon="-104.8997171368440888"/>
+ <node visible="true" id="-1669737" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8539525522998730" lon="-104.8996840393162842"/>
+ <node visible="true" id="-1669739" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8536248456666229" lon="-104.8996934957527998"/>
+ <node visible="true" id="-1669741" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8532583477841484" lon="-104.8997542928851772"/>
+ <node visible="true" id="-1669743" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8532424272016641" lon="-104.8996868263970015"/>
+ <node visible="true" id="-1669745" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8533001490996028" lon="-104.8994528828182951"/>
+ <node visible="true" id="-1669747" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8533470481072030" lon="-104.8993671807151884"/>
+ <node visible="true" id="-1669749" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535166057996975" lon="-104.8992698972467963"/>
+ <node visible="true" id="-1669751" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535689160700528" lon="-104.8990568001256065"/>
+ <node visible="true" id="-1669753" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535508780501431" lon="-104.8988321216391171"/>
+ <node visible="true" id="-1669755" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8536194225014810" lon="-104.8987070428940598"/>
+ <node visible="true" id="-1669757" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8537204352567329" lon="-104.8987232568054679"/>
+ <node visible="true" id="-1669759" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8539585361836473" lon="-104.8989155074691695"/>
+ <node visible="true" id="-1669761" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541335037809361" lon="-104.8988900284655159"/>
+ <node visible="true" id="-1669763" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541767946664436" lon="-104.8987070428940598"/>
+ <node visible="true" id="-1669765" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542327120211866" lon="-104.8983109602013855"/>
+ <node visible="true" id="-1669767" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8544293243065937" lon="-104.8980654352573794"/>
+ <node visible="true" id="-1669769" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8546042907457476" lon="-104.8977759011253141"/>
+ <node visible="true" id="-1669771" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8547197322843374" lon="-104.8973219116062410"/>
+ <node visible="true" id="-1669773" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548604264061623" lon="-104.8968586569948798"/>
+ <node visible="true" id="-1669775" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549019130812496" lon="-104.8964394115716487"/>
+ <node visible="true" id="-1669777" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549073243849037" lon="-104.8961823052623856"/>
+ <node visible="true" id="-1669779" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548514075605240" lon="-104.9005693264316363"/>
+ <node visible="true" id="-1669781" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549289695954272" lon="-104.9005253172435630"/>
+ <node visible="true" id="-1669783" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548207434768855" lon="-104.9008079025564655"/>
+ <node visible="true" id="-1669785" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8543319201230304" lon="-104.9017876860593788"/>
+ <node visible="true" id="-1669787" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541298962059614" lon="-104.9023065312240703"/>
+ <node visible="true" id="-1669789" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8540541370891077" lon="-104.9024316099691276"/>
+ <node visible="true" id="-1669791" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549524185660573" lon="-104.8987388916486054"/>
+ <node visible="true" id="-1669793" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549321261880536" lon="-104.8979050333482093"/>
+ <node visible="true" id="-1669809" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8540500760295728" lon="-104.9014301277661758"/>
+ <node visible="true" id="-1669811" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542857289813597" lon="-104.9010881830215283"/>
+ <node visible="true" id="-1669813" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8543092942335875" lon="-104.9003407462787862"/>
+ <node visible="true" id="-1669815" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8543116507583761" lon="-104.8997596908084375"/>
+ <node visible="true" id="-1669817" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8532676805377761" lon="-104.8997880601180128"/>
+ <node visible="true" id="-1669819" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535732961711560" lon="-104.8997265932806044"/>
+ <node visible="true" id="-1669821" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8538862746756308" lon="-104.8997029521893154"/>
+ <node visible="true" id="-1669823" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542508008446887" lon="-104.8997596908084375"/>
+ <node visible="true" id="-1669825" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549467092522036" lon="-104.8997596908084375"/>
+ <node visible="true" id="-1669827" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8532694843471589" lon="-104.8996219707513973"/>
+ <node visible="true" id="-1669829" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8532929338649282" lon="-104.8994899431871630"/>
+ <node visible="true" id="-1669831" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8533362252620336" lon="-104.8994042410840848"/>
+ <node visible="true" id="-1669833" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8533939470838590" lon="-104.8993555993499029"/>
+ <node visible="true" id="-1669835" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535256248145799" lon="-104.8992606321545793"/>
+ <node visible="true" id="-1669837" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535562894566056" lon="-104.8992258880587372"/>
+ <node visible="true" id="-1669839" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535779350783059" lon="-104.8991656649592557"/>
+ <node visible="true" id="-1669841" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535833464826936" lon="-104.8990915442214487"/>
+ <node visible="true" id="-1669843" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535779350783059" lon="-104.8989919444800307"/>
+ <node visible="true" id="-1669845" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535761312767463" lon="-104.8987626334474044"/>
+ <node visible="true" id="-1669847" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8535887578866763" lon="-104.8987000940748828"/>
+ <node visible="true" id="-1669849" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8536230301023551" lon="-104.8986746150712577"/>
+ <node visible="true" id="-1669851" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8536609099004693" lon="-104.8986584011598637"/>
+ <node visible="true" id="-1669853" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8537078086701726" lon="-104.8986607174329180"/>
+ <node visible="true" id="-1669855" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8537619225967887" lon="-104.8987000940748828"/>
+ <node visible="true" id="-1669857" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8538954034397648" lon="-104.8988205402738174"/>
+ <node visible="true" id="-1669859" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8539441058471269" lon="-104.8988552843696880"/>
+ <node visible="true" id="-1669861" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8539982195939615" lon="-104.8988691820080135"/>
+ <node visible="true" id="-1669863" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8540505295101042" lon="-104.8988691820080135"/>
+ <node visible="true" id="-1669865" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541136621162906" lon="-104.8988506518235511"/>
+ <node visible="true" id="-1669867" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541587568006719" lon="-104.8988135914546547"/>
+ <node visible="true" id="-1669869" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541785984527408" lon="-104.8987371544437934"/>
+ <node visible="true" id="-1669871" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541948325276039" lon="-104.8984754155884076"/>
+ <node visible="true" id="-1669873" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542110665987437" lon="-104.8983966623044921"/>
+ <node visible="true" id="-1669875" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542417309452404" lon="-104.8982831649247061"/>
+ <node visible="true" id="-1669877" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542741990624236" lon="-104.8981789326371512"/>
+ <node visible="true" id="-1669879" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8543120785137361" lon="-104.8981163932646297"/>
+ <node visible="true" id="-1669881" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8543734071064222" lon="-104.8980700678034879"/>
+ <node visible="true" id="-1669883" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8544690074542416" lon="-104.8980052121579121"/>
+ <node visible="true" id="-1669885" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8545086905797419" lon="-104.8979496216045391"/>
+ <node visible="true" id="-1669887" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8545700190028782" lon="-104.8978245428595244"/>
+ <node visible="true" id="-1669889" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8546060945212091" lon="-104.8976786176569505"/>
+ <node visible="true" id="-1669891" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8546295435983069" lon="-104.8975512226388531"/>
+ <node visible="true" id="-1669893" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8546926756905222" lon="-104.8973821347057225"/>
+ <node visible="true" id="-1669895" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8547576114983428" lon="-104.8972176793187003"/>
+ <node visible="true" id="-1669897" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548243510168234" lon="-104.8970439588394328"/>
+ <node visible="true" id="-1669899" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548622301751152" lon="-104.8969235126404982"/>
+ <node visible="true" id="-1669901" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548910904726696" lon="-104.8966733551503836"/>
+ <node visible="true" id="-1669903" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549019130812283" lon="-104.8964787882136278"/>
+ <node visible="true" id="-1669905" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549163432234153" lon="-104.8961568262587747"/>
+ <node visible="true" id="-1669907" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549614373988845" lon="-104.8999833093483289"/>
+ <node visible="true" id="-1669909" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549596336324043" lon="-104.9003909734063029"/>
+ <node visible="true" id="-1669911" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549470072658281" lon="-104.9004674104171642"/>
+ <node visible="true" id="-1669913" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549307733626748" lon="-104.9005623776124736"/>
+ <node visible="true" id="-1669915" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8548694452505998" lon="-104.9007059865419933"/>
+ <node visible="true" id="-1669917" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8547540039550228" lon="-104.9009352975746054"/>
+ <node visible="true" id="-1669919" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8544527734419631" lon="-104.9015560587537834"/>
+ <node visible="true" id="-1669921" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8543571730723087" lon="-104.9017344117791311"/>
+ <node visible="true" id="-1669923" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542940406822765" lon="-104.9018896020739220"/>
+ <node visible="true" id="-1669925" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8542146741696044" lon="-104.9020934341028948"/>
+ <node visible="true" id="-1669927" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8541136621162764" lon="-104.9023412753199693"/>
+ <node visible="true" id="-1669929" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8540360991922427" lon="-104.9024200286038990"/>
+ <node visible="true" id="-1669931" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549140885138726" lon="-104.8987446823312126"/>
+ <node visible="true" id="-1669933" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549028149651861" lon="-104.8982930090851937"/>
+ <node visible="true" id="-1669935" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549095790946168" lon="-104.8979021380068986"/>
+ <node visible="true" id="-1669937" timestamp="1970-01-01T00:00:00Z" version="1" lat="38.8549353885838542" lon="-104.8994161899705375"/>
+ <way visible="true" id="-1669801" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669731"/>
+ <nd ref="-1669791"/>
+ <nd ref="-1669793"/>
+ <tag k="note" v="1"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669799" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669729"/>
+ <nd ref="-1669779"/>
+ <nd ref="-1669781"/>
+ <tag k="note" v="3"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669797" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669789"/>
+ <nd ref="-1669787"/>
+ <nd ref="-1669785"/>
+ <nd ref="-1669783"/>
+ <nd ref="-1669781"/>
+ <nd ref="-1669731"/>
+ <nd ref="-1669733"/>
+ <nd ref="-1669735"/>
+ <nd ref="-1669723"/>
+ <nd ref="-1669737"/>
+ <nd ref="-1669739"/>
+ <nd ref="-1669741"/>
+ <nd ref="-1669743"/>
+ <nd ref="-1669745"/>
+ <nd ref="-1669747"/>
+ <nd ref="-1669749"/>
+ <nd ref="-1669751"/>
+ <nd ref="-1669753"/>
+ <nd ref="-1669755"/>
+ <nd ref="-1669757"/>
+ <nd ref="-1669759"/>
+ <nd ref="-1669761"/>
+ <nd ref="-1669763"/>
+ <nd ref="-1669765"/>
+ <nd ref="-1669767"/>
+ <nd ref="-1669769"/>
+ <nd ref="-1669771"/>
+ <nd ref="-1669773"/>
+ <nd ref="-1669775"/>
+ <nd ref="-1669777"/>
+ <tag k="note" v="0"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669795" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669725"/>
+ <nd ref="-1669727"/>
+ <nd ref="-1669729"/>
+ <nd ref="-1669735"/>
+ <tag k="note" v="2"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669945" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669825"/>
+ <nd ref="-1669937"/>
+ <nd ref="-1669931"/>
+ <nd ref="-1669933"/>
+ <nd ref="-1669935"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669943" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669929"/>
+ <nd ref="-1669927"/>
+ <nd ref="-1669925"/>
+ <nd ref="-1669923"/>
+ <nd ref="-1669921"/>
+ <nd ref="-1669919"/>
+ <nd ref="-1669917"/>
+ <nd ref="-1669915"/>
+ <nd ref="-1669913"/>
+ <nd ref="-1669911"/>
+ <nd ref="-1669909"/>
+ <nd ref="-1669907"/>
+ <nd ref="-1669825"/>
+ <nd ref="-1669815"/>
+ <nd ref="-1669823"/>
+ <nd ref="-1669821"/>
+ <nd ref="-1669819"/>
+ <nd ref="-1669817"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669941" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669815"/>
+ <nd ref="-1669813"/>
+ <nd ref="-1669811"/>
+ <nd ref="-1669809"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+ <way visible="true" id="-1669939" timestamp="1970-01-01T00:00:00Z" version="1">
+ <nd ref="-1669817"/>
+ <nd ref="-1669827"/>
+ <nd ref="-1669829"/>
+ <nd ref="-1669831"/>
+ <nd ref="-1669833"/>
+ <nd ref="-1669835"/>
+ <nd ref="-1669837"/>
+ <nd ref="-1669839"/>
+ <nd ref="-1669841"/>
+ <nd ref="-1669843"/>
+ <nd ref="-1669845"/>
+ <nd ref="-1669847"/>
+ <nd ref="-1669849"/>
+ <nd ref="-1669851"/>
+ <nd ref="-1669853"/>
+ <nd ref="-1669855"/>
+ <nd ref="-1669857"/>
+ <nd ref="-1669859"/>
+ <nd ref="-1669861"/>
+ <nd ref="-1669863"/>
+ <nd ref="-1669865"/>
+ <nd ref="-1669867"/>
+ <nd ref="-1669869"/>
+ <nd ref="-1669871"/>
+ <nd ref="-1669873"/>
+ <nd ref="-1669875"/>
+ <nd ref="-1669877"/>
+ <nd ref="-1669879"/>
+ <nd ref="-1669881"/>
+ <nd ref="-1669883"/>
+ <nd ref="-1669885"/>
+ <nd ref="-1669887"/>
+ <nd ref="-1669889"/>
+ <nd ref="-1669891"/>
+ <nd ref="-1669893"/>
+ <nd ref="-1669895"/>
+ <nd ref="-1669897"/>
+ <nd ref="-1669899"/>
+ <nd ref="-1669901"/>
+ <nd ref="-1669903"/>
+ <nd ref="-1669905"/>
+ <tag k="highway" v="road"/>
+ <tag k="error:circular" v="15"/>
+ </way>
+</osm>