Finished after improved version