make everything more functional