change to be more functional