see serinus.h for history