changed static to instance method to allow override