wrote tests for everything