added support for preference