tidied up retrieve fields method