First commit: code and setup