Broke up lower and higher level code