start conversion to eieio interface

this should simplify the setup call I think instead of passing around
all those functions which I expect will get to be too many at some
point.