Sub-controllers in Phoenix?

So I have 3 levels of my application:

[Profile L1] has_many [Profile L2] has_many [Profile L3]

Each [Profile L2] is classified according to [Category L1] and [Category L2] such that each [Category L2] has a parent [Category L1]

The list of [Category L1] items is immutable, and view implementations, data validations, etc. vary slightly between different [Category L1]s

The list of [Category L2] items is mutable, and will be tied to a database table.

[Profile L2] behaviour depends on it’s [Category L1]. Despite this, all [Profile L2] instances are tied to the same resources block in router.ex

How would I architect this best? Extend [Profile L2]? Write all methods with guard clauses?