Design and performance improve

#140, #139, #135