closes #44: code is now organized in vertical modules