I really like this syntax, so Im going to bend the types a bit to make them fit