made weak optional