now with object oriented-ness!