Added view layer, refactored bunch of the model shit