I will make a separate PR when I get time. There are a few things that need to be clarified properly.