a bit more towards OO