implementations for module 2