#44 refactored module structure to enable extensions