restructuring the code
using docker