upgraded shapeless