basic gem structure

hopefully over engineered