Most of the functions will be implemented for an optimisation course