split up application into separate modules