redo the type system, prim need to be done