major work; too much to list