more abstract algebra types