Work on new version based on heterogenous lists instead of sum types