use annotations for type coersion instead of defaults