#42 has been implemented
#43 have been implemented
merging for v4.3 release