attempt 1 complete... still some debugging to do