The definitive guide to object oriented javascript