Add author name, better tests and abstractions