ship punani: abstract has/install/remove