some refactoring/initial for mcclure