Mark -> type parameter M to avoid new too many Mark