parent can be null to pass mixins