Finished frist version all