chain responsibility design pattern
removing swp