gem changes
hopefully its mostly there
cart functions