long overdue stuff
don't use functions to store function output, it locks it like that forever
rewrite this damn thing