framework only needed for cf