implemented helpers, split into more classes