yeah this was much nicer, already gonna start generalizing expression op's and types :)