factory methods should be static