more of the architecture translated over from Java