finished interface/implementation separation