functions now have optional return type