additional read function