Reworked structure, will use a very clear interface/implementation pattern.