Split up implementations into different directories