use singleton method instead