Updated and cleaned up.