adding an as.data.frame function