some hard challenges. TODO - a lot to learn..