initial commit, still needs timing and comments