j should just be using public functions