Try to separate the various methods into classes