enforce overrides with annotation
optional idAlias should be second arg to constructor
update tests to use static method