Updated and cleaned