Refactor Internal Classes to separate classes

Signed-off-by: Kelvin Rodriguez <kelvincoding@gmail.com>