Added interfaces and started writing tests