With commenting and a test function