* performance optimisation
* code refactoring