splitted modules, macro construction added