updates to break API into OO structure