First commit: base functionality