add main module and tests