switched to typescript