Rough working version (to be refactored heavily)
Add simple viewer as a start