Now uses more mature OO structure