Updated and cleant up