improved some answer