First commit: basic functions are working