Split up interface into several classes, added a class for handling signals