improved version,still poor