use read in object for better flexibility