finally submitted version