same comment as previously, consider refactoring in order not to export so many global symbols