New read function