refactor
proper order
fixed docblock
tags, tests, refactor