first part of the dependent types at work.