initial implementation of hasPart. needs cleaning