use own implementation