fixes #17 by introducing required methods