bah, Gonna use the generic types for implemnting the spec and the nNEVER AGAIN