added typing to self