Add basic functionality and tests