First commit: basic functionality