feat: add basic functionality