Basic layering - needs to be reworked and abstracted, just for testing