Each of the latest versions here are copy and pastes of the original version with the minor changes needed. Is there a better way to do this?