Originally created by Marcin Erdmann.
This will allow to simplify some methods which now have to have different signatures for each of those classes and also bring support where there aren't all signatures available (see: http://markmail.org/thread/wdis3avszsamxddw)