Can I use virutal to create general read functions?