more effective then first version