implement interface
rebuild