First commit: initial software architecture