A method of operating a software application on a processor of a communication device, the method comprising: installing the software application on the communication device, the software application comprising application function code and user interface code, the user interface code being configured to control the processor of the communication device to implement a user interface for a user to interact with the software application executing on the processor of the communication device, the user interface comprising different forms, layouts and pages, guiding the user through specific business processes in a structured manner as defined by the user interface code, and the user interface code being coupled with the separately compiled application function code and executed by the processor in a separate process such that the user interface code is replaceable with alternative user interface code (12, 31), without requiring a recompilation of the application function code and the alternative user interface code (12, 31) for the software application to execute on the processor of the communication device with an alternative user interface implemented by the alternative user interface code (12, 31); installing and executing on the processor of the communication device a customer journey tracking code, the customer journey tracking code recording user interaction with the software application through the user interface implemented by the user interface code; determining (S7, S7*) alternative user interface code (12, 31), using the user interaction recorded by the customer journey tracking code; and installing and executing the alternative user interface code (12, 31) on the processor of the communication device for implementing an alternative user interface for the user to interact with the software application, wherein the alternative user interface includes reordered user interface elements, workflow and processes, and adjusted and altered page layouts, such as to achieve for the user a more efficient interaction with the software application. installing the software application on the communication device, the software application comprising application function code and user interface code, the user interface code being configured to control the processor of the communication device to implement a user interface for a user to interact with the software application executing on the processor of the communication device, the user interface comprising different forms, layouts and pages, guiding the user through specific business processes in a structured manner as defined by the user interface code, and the user interface code being coupled with the separately compiled application function code and executed by the processor in a separate process such that the user interface code is replaceable with alternative user interface code (12, 31), without requiring a recompilation of the application function code and the alternative user interface code (12, 31) for the software application to execute on the processor of the communication device with an alternative user interface implemented by the alternative user interface code (12, 31); installing and executing on the processor of the communication device a customer journey tracking code, the customer journey tracking code recording user interaction with the software application through the user interface implemented by the user interface code; determining (S7, S7*) alternative user interface code (12, 31), using the user interaction recorded by the customer journey tracking code; and installing and executing the alternative user interface code (12, 31) on the processor of the communication device for implementing an alternative user interface for the user to interact with the software application, wherein the alternative user interface includes reordered user interface elements, workflow and processes, and adjusted and altered page layouts, such as to achieve for the user a more efficient interaction with the software application.