implementing `*`