somewhat final version