Class interfaces and some implementation