fn is prototype