public FourSquareCheckin(Dictionary<string, object> JSONDictionary)
                : base(JSONDictionary)
            {
                JSONDictionary = ExtractDictionary(JSONDictionary, "response:checkin");
                id = GetDictionaryValue(JSONDictionary, "id");
                type = GetDictionaryValue(JSONDictionary, "type");
                _private = GetDictionaryValue(JSONDictionary, "private");
                if (JSONDictionary.ContainsKey("user"))
                {
                    user = new FourSquareUser((Dictionary<string, object>)JSONDictionary["user"]);
                }

                timeZone = GetDictionaryValue(JSONDictionary, "timeZone");

                if (JSONDictionary.ContainsKey("venue"))
                {
                    venue = new FourSquareVenue((Dictionary<string, object>)JSONDictionary["venue"]);
                }

                if (JSONDictionary.ContainsKey("location"))
                {
                    location = new FourSquareLocation((Dictionary<string, object>)JSONDictionary["location"]);
                }

                shout = GetDictionaryValue(JSONDictionary, "shout");
                createdAt = GetDictionaryValue(JSONDictionary, "createdAt");

                if (JSONDictionary.ContainsKey("source"))
                {
                    source = new FourSquareSource((Dictionary<string, object>)JSONDictionary["source"]);
                }

                if (JSONDictionary.ContainsKey("photos"))
                {
                    Dictionary<string, object> PhotoThings = (Dictionary<string, object>)JSONDictionary["photos"];
                    if (Int32.Parse(PhotoThings["count"].ToString()) > 0)
                    {
                        foreach (object PhotoObj in (GetDictionaryList( PhotoThings, "items")))
                        {
                            photos.Add(new FourSquarePhoto((Dictionary<string, object>)PhotoObj));
                        }
                    }
                }

                if (JSONDictionary.ContainsKey("comments"))
                {
                    if ((GetDictionaryList( ExtractDictionary(JSONDictionary, "comments"),"items")).Count > 0)
                    {
                        foreach (object obj in (GetDictionaryList( ExtractDictionary(JSONDictionary, "comments"),"items")))
                        {
                            comments.Add(new FourSquareComment((Dictionary<string, object>)obj));
                        }
                    }
                }

                if (JSONDictionary.ContainsKey("overlaps"))
                {
                    foreach (object obj in (GetDictionaryList(ExtractDictionary(JSONDictionary, "overlaps"),"items")))
                    {
                        overlaps.Add(new FourSquareOverlaps((Dictionary<string, object>)obj));
                    }
                }

                if (JSONDictionary.ContainsKey("isMayor"))
                {
                    if (JSONDictionary["isMayor"].ToString().Equals("True"))
                    {
                        IsMayor = true;
                    }
                }
            }
        public FourSquareCheckin(Dictionary<string, object> JSONDictionary)
        {
            JSON = JSONSerializer(JSONDictionary);

            id = GetDictionaryValue(JSONDictionary, "id");
            type = GetDictionaryValue(JSONDictionary, "type");
            _private = GetDictionaryValue(JSONDictionary, "private");
            if (JSONDictionary.ContainsKey("user"))
            {
                user = new FourSquareUser((Dictionary<string, object>)JSONDictionary["user"]);
            }

            timeZone = GetDictionaryValue(JSONDictionary, "timeZone");

            if (JSONDictionary.ContainsKey("venue"))
            {
                venue = new FourSquareVenue((Dictionary<string, object>)JSONDictionary["venue"]);
            }

            if (JSONDictionary.ContainsKey("location"))
            {
                location = new FourSquareLocation((Dictionary<string, object>)JSONDictionary["location"]);
            }

            shout = GetDictionaryValue(JSONDictionary, "shout");
            createdAt = GetDictionaryValue(JSONDictionary, "createdAt");

            if (JSONDictionary.ContainsKey("source"))
            {
                source = new FourSquareSource((Dictionary<string, object>)JSONDictionary["source"]);
            }

            if (JSONDictionary.ContainsKey("photos"))
            {
                Dictionary<string, object> PhotoThings = (Dictionary<string, object>)JSONDictionary["photos"];
                if (Int32.Parse(PhotoThings["count"].ToString()) > 0)
                {
                    foreach (object obj in (object[])PhotoThings["items"])
                    {
                        //TODO: Photos as an object
                        throw new Exception("Photos here!");
                    }
                }
            }

            if (JSONDictionary.ContainsKey("comments"))
            {
                if (((object[])ExtractDictionary(JSONDictionary, "comments")["items"]).Length > 0)
                {
                    foreach (object obj in ((object[])ExtractDictionary(JSONDictionary, "comments")["items"]))
                    {
                        comments.Add(new FourSquareComment((Dictionary<string, object>)obj));
                    }
                }
            }

            if (JSONDictionary.ContainsKey("overlaps"))
            {
                foreach (object obj in ((object[])ExtractDictionary(JSONDictionary, "overlaps")["items"]))
                {
                    overlaps.Add(new FourSquareOverlaps((Dictionary<string, object>)obj));
                }
            }

            if (JSONDictionary.ContainsKey("isMayor"))
            {
                if (JSONDictionary["isMayor"].ToString().Equals("True"))
                {
                    IsMayor = true;
                }
            }
        }