general frameWork