simplified, less redundancy