add tests for core functionality