long overdue - all new code