Laying down base, added DI and some tests