#5: make abstract entity