FINAL

Working, tested and complete