* first try, failing test
* fix implementation and tests
* lint:fix
* move method tests to seperate test
* lint fix
* apply starry's comments and grab the bonus points
* minor fixes after starry's second review
Co-authored-by: Arrowana <8245419+Arrowana@users.noreply.github.com>