close #32 with a smooth implementation (: