almost the final version