refactor and properties externalisation