three class interface