add _mixins module and add a lot of comments