add alternative functors and extra instances