this is much work; may be a dead end even.