simpler readonly properties and init support for inject