1st commit. Basic functionality, needs refactoring to apply best practices for Angular