finished v1.0, without using OOP