finalized first version