implementing a server relies on interfaces instead of abstract methods