need to use init, because properties are not yet set in __construct