factory function
(#1) clean up tests
(#1) clean up tests
(#3) tests for #2
(#3) tests for #2