added more core functionality