add laval module forked from bubak