my functional yet boring second attemp