Add some tests, introduce Interfaces