ditching oop in favor of closures