as the project grows, we need to some tests to make sure the upcoming changes won't break the existing ones.