ditch groups in favor of ports and object props