inductive types; to do dependent types