some methods moved from header to cpp
job initial implementation