essentialFeatures :: T.Tree (Feature a) -> [Feature a]
essentialFeatures ftree =
    foldFTree (++) (filterMandatory) (filterMandatory) [] ftree
    where
    filterMandatory ftree = if isMandatory (fnode ftree)
                               then [fnode ftree]
                               else []
essentialFeatures :: T.Tree (Feature a) -> [Feature a]
essentialFeatures ftree =
    foldFTree (++) (filterMandatory) (filterMandatory) [] ftree
    where
    filterMandatory ftree = if isMandatory (fnode ftree)
                               then [fnode ftree]
                               else []
essentialFeatures ftree =
    foldFTree (++) (filterMandatory) (filterMandatory) [] ftree
    where
    filterMandatory ftree = if isMandatory (fnode ftree)
                               then [fnode ftree]
                               else []