diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 062927ab..11a07e52 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,2 +1,3 @@
 github: hunterlong
+patreon: statping
 custom: ['https://www.buymeacoffee.com/hunterlong']
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0147aadb..dbb47bb8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+# 0.90.26 (04-13-2020)
+- Fixed Delete Failures button/function
+- Removed timezone field from Settings (core)
+- Modified CDN asset URL
+- Fixed single Service view, more complex charts
+
 # 0.90.25
 - Added string response on OnTest for Notifiers
 - Modified UI to show user the response for a Notifier.
diff --git a/Makefile b/Makefile
index d83fad6b..cc09f128 100644
--- a/Makefile
+++ b/Makefile
@@ -27,8 +27,8 @@ lite: clean
 
 reup: down clean compose-build-full up
 
-test: clean
-	go test -v -p=4 -ldflags="-X main.VERSION=testing" -coverprofile=coverage.out ./...
+test: clean compile
+	go test -v -p=1 -ldflags="-X main.VERSION=testing" -coverprofile=coverage.out ./...
 
 # build all arch's and release Statping
 release: test-deps
diff --git a/database/grouping.go b/database/grouping.go
index f81b6d5b..6c76b821 100644
--- a/database/grouping.go
+++ b/database/grouping.go
@@ -146,6 +146,45 @@ type isObject interface {
 	Db() Database
 }
 
+func ParseRequest(r *http.Request) (*GroupQuery, error) {
+	fields := parseGet(r)
+	grouping := fields.Get("group")
+	startField := utils.ToInt(fields.Get("start"))
+	endField := utils.ToInt(fields.Get("end"))
+	limit := utils.ToInt(fields.Get("limit"))
+	offset := utils.ToInt(fields.Get("offset"))
+	fill, _ := strconv.ParseBool(fields.Get("fill"))
+	orderBy := fields.Get("order")
+	if limit == 0 {
+		limit = 10000
+	}
+
+	if grouping == "" {
+		grouping = "1h"
+	}
+	groupDur, err := time.ParseDuration(grouping)
+	if err != nil {
+		log.Errorln(err)
+		groupDur = 1 * time.Hour
+	}
+
+	query := &GroupQuery{
+		Start:     time.Unix(startField, 0).UTC(),
+		End:       time.Unix(endField, 0).UTC(),
+		Group:     groupDur,
+		Order:     orderBy,
+		Limit:     int(limit),
+		Offset:    int(offset),
+		FillEmpty: fill,
+	}
+
+	if query.Start.After(query.End) {
+		return nil, errors.New("start time is after ending time")
+	}
+
+	return query, nil
+}
+
 func ParseQueries(r *http.Request, o isObject) (*GroupQuery, error) {
 	fields := parseGet(r)
 	grouping := fields.Get("group")
@@ -169,6 +208,9 @@ func ParseQueries(r *http.Request, o isObject) (*GroupQuery, error) {
 		log.Errorln(err)
 		groupDur = 1 * time.Hour
 	}
+	if endField == 0 {
+		endField = utils.Now().Unix()
+	}
 
 	query := &GroupQuery{
 		Start:     time.Unix(startField, 0).UTC(),
diff --git a/frontend/public/base.gohtml b/frontend/public/base.gohtml
index 525d21e2..95564ce7 100644
--- a/frontend/public/base.gohtml
+++ b/frontend/public/base.gohtml
@@ -10,9 +10,9 @@