more details on how to extend the algorithms