rewrite instance methods
add required library