Some class redesign, close #105