improve on take method