The core of a graph is the smallest graph that is homomorphically equivalent to (that is, there exist homomorphisms in both directions). The core of is unique up to isomorphism and is an induced subgraph of . We give a construction in some sense dual to the core. The hull of a graph is a graph containing as a spanning subgraph, admitting all the endomorphisms of , and having as core a complete graph of the same order as the core of . This construction is related to the notion of a synchronizing permutation group, which arises in semigroup theory; we provide some more insight by characterizing these permutation groups in terms of graphs. It is known that the core of a vertex-transitive graph is vertex-transitive. In some cases we can make stronger statements: for example, if is a nonedge-transitive graph, we show that either the core of is complete, or is its own core. Rank-three graphs are non-edge-transitive. We examine some families of these to decide which of the two alternatives for the core actually holds. We will see that this question is very difficult, being equivalent in some cases to unsolved questions in finite geometry (for example, about spreads, ovoids and partitions into ovoids in polar spaces).2000 Mathematics subject classification: primary 05C25; secondary 05C15, 05B25.