extra stuff for analysis
some more incredibly useful functions + start on eval