80% done in List.v