a first try on OOP