My preference would be to remove the magic methods from the interfaces in general.  Rather be explicit with the contract than try to get cute.  Initially, I left the interface blank, but then went back and added all public methods from those classes they were meant to generalize.  The answer is somewhere in between...