more functional changes