refs #4 Add basic API implementation, add private utility methods, and
refactor headers