renaming readonlyproperty and moving initializer code to interface