separate guardian into modules
refactor guardian specs