Improvement addressing #47 #59 #41 #39

Need testing for sure