diff --git a/R/tidy_result.R b/R/tidy_result.R
index e8a333c88f3ba63d4d0bb86998c754d93beec6e6..4115729aaeb7e596a3aa3714f73daab1327e3050 100644
--- a/R/tidy_result.R
+++ b/R/tidy_result.R
@@ -46,6 +46,13 @@ tidy_result <- function(res) {
     l <- lapply(strsplit(x, ":", fixed = TRUE),
                 function(obj) {
                   df <- data.frame(x = obj[2])
+                  if (obj[1] != "var") {
+                    if (obj[1] == "t") {
+                      df$x <- as.numeric(df$x)
+                    } else {
+                      df$x <- as.integer(df$x)
+                    }
+                  }
                   names(df) <- obj[1]
                   return(df)
                 })
@@ -53,7 +60,9 @@ tidy_result <- function(res) {
   })
   df_obj <- do.call(rbind, l)
   df$key <- NULL
-  cbind(df_obj, df)
+  df <- cbind(df_obj, df)
+  class(df) <- c("SicResultTidy", class(df))
+  df
 }
 
 #' @rdname tidy_result
@@ -71,5 +80,6 @@ compact_tidy_result <- function(res) {
   attr(df, "t") <- res[, 1]
   df$t <- NULL
   df$value <- NULL
+  class(df) <- c("SicResultCompact", class(df))
   df
 }
diff --git a/tests/testthat/test-get_result.R b/tests/testthat/test-get_result.R
index 9821cb2c574a4e0297c7e4d7838f30a668297f6b..3739dfd72dbd2c886cf6182a37c089b9ded18bc1 100644
--- a/tests/testthat/test-get_result.R
+++ b/tests/testthat/test-get_result.R
@@ -25,4 +25,5 @@ test_that("get_result with tidy return a tidy result", {
   expect_s3_class(result, "data.frame")
   expect_equal(names(result), c("bf", "sn", "var", "values"))
   expect_equal(attr(result, "t"), seq(0, 86400, by = 60))
+  expect_type(result$bf, "integer")
 })