improved performance, added readField method