get some structure in

- moved operations out into partial files for more readability (come at me bro)
- introduced `IObservableRepository` interface for those people who like tests