JS goes OO
work in progress