refactor sub/super type
comment