ready for test (added some comments)