pretty much final version