to test
finish main codes