Better structure

Cleaner and easier to maintain.
`self._viewport` => `this.keywords`, wat?