minor refactorings: pull out inner traits, adhere to shapeless' naming