shortened and updated