refactor and simplify with less constructor shit
2.0.0