finished prototype pattern