contains all functions