updated with moar gems need to implement still