implement normal complement