add  module and clean up implementation + new docs