second rev, more complete