complete overhaul of gem - this will not be backwards compatible