builder and prototype