Starting point for the class. Not too much repeated code.
Base matrix working. Reworking neighbouring functions (will have their own module).