Implementations of various algorithms and data structure