more functional improvements