three derivative methods implemented