Now including tests and alternative methods