Specd complex representor

This is intended as a code quality version of the previous PR, please review for merge.
This is kind of weird, if the second parameter is present then the first will be ignored, if it is not present then we build based on the first param.