impl duplicate element P14 & P15
added missing impl P15
P16
P17 and macro to help with testing