completing the core functionality