See sources and documentation.