function types somewhat working!