reworked to be objects - still haven't exported or fixed bug