make it more functional