removed original implementation