First cut at final version.